在【使用QNX Momentics IDE構建的(只讀QNX系統)】中搭建SSH方法

1、在IDE安裝目錄中找到下述文件備份並刪除

因爲QNX鏡像啓動後,系統本身爲只讀,而SSH功能需要用到passwd、profile等文件,故需要先刪除IDE安裝目錄下述幾個文件,再編譯QNX鏡像,待系統鏡像啓動後重新手動創建這幾個文件,再將文件原本的內容複製進去即可。

  • 進入IDE安裝目錄(我的軟件在默認安裝目錄c盤C:\qnx660\target\qnx6),

    找到下述4個文件並重命名爲 【backup_原名稱】,後面步驟會用到文件內容。

    {QNX IDE安裝目錄}\target\qnx6\etc\passwd
    {QNX IDE安裝目錄}\target\qnx6\etc\profile
    
    {QNX IDE安裝目錄}\target\qnx6\etc\default\passwd
    {QNX IDE安裝目錄}\target\qnx6\etc\default\login
    

2、在build文件中增加如下內容

  • 在啓動腳本[+script] .script = { … }中增加靜態IP地址

    ifconfig dm0 192.168.50.128
    
  • 在啓動腳本[+script] .script = { … }ssh相關代碼

    #######################################################################
    ## sshd lsy
    #######################################################################
    devc-pty
    waitfor /dev/ptyp0 4
    waitfor /dev/socket 4
    PATH=$PATH:/usr/bin qconn port=8000
    inetd &
    pdebug
    /proc/boot/random -t -p
    #/usr/sbin/sshd
    
  • 在build文件中增加ssh相關代碼

    ###########################################################################
    ## lsy sshd config
    ###########################################################################
    ##密碼和用戶信息,主要看passwd中有沒有ssh用戶
    /etc=${QNX_TARGET}/etc
    /etc/passwd=${QNX_TARGET}/etc/passwd
    /etc/group=${QNX_TARGET}/etc/group
    
    ##用於生成key文件
    /usr/bin/ssh-keygen=ssh-keygen
    /usr/sbin/sshd=sshd
    /usr/lib/libcrypto.so.2=libcrypto.so.2
    [type=dir] /var/chroot
    [type=dir dperms=0700] /var/chroot/sshd
    
    ##注意:build中創建的文件都是隻讀的
    ##非常重要的ssh_config文件
    [type=dir] /etc/ssh
    /etc/ssh/sshd_config={
    Protocol 2
    LoginGraceTime 600
    PermitRootLogin yes
    PasswordAuthentication yes
    PermitEmptyPasswords yes
    PrintMotd no
    Subsystem   sftp    /usr/libexec/sftp-server
    }
    ##用於文件上傳的SFTP服務
    [type=dir] /usr/libexec
    /usr/libexec/sftp-server = ${QNX_TARGET}/${PROCESSOR}/usr/libexec/sftp-server
    /etc/services=${QNX_TARGET}/etc/services
    /etc/inetd.conf={
    ssh stream tcp nowait root /usr/sbin/sshd in.sshd -i
    }
    ##用於設定終端命令行,通過ssh遠程登錄以後可以看到文件目錄以及使用各種命令---》不能有,需要系統啓動後手動cp追加
    #/etc/profile={
    #export PATH=:/proc/boot:/sbin:/bin:/usr/sbin:/usr/bin
    #export LD_LIBRARY_PATH=/proc/boot:/lib:/usr/lib:/lib/dll:/usr/lib/graphics:/usr/lib/graphics/am335x
    #export GRAPHICS_ROOT=/usr/lib/graphics/am335x
    #}
    ##前面的路徑不要省略,否則後續配置Qt creator會出現問題!!!!!
    ##需要保持和SDP7.0安裝路徑target中放置路徑一致!!
    /bin/chmod=chmod
    /bin/kill=kill
    /bin/mkdir=mkdir
    /bin/ps=ps
    /bin/uname=uname
    /bin/slog2info = slog2info
    
    /usr/bin/awk=awk
    /usr/bin/grep=grep
    /usr/bin/netstat=netstat
    /usr/bin/printf=printf
    /usr/bin/sed=sed
    /usr/bin/sleep=sleep
    
  • 在build文件中增加常用命令

    ###########################################################################
    ## lsy add cmd
    ###########################################################################
    ldd
    pdebug
    devc-pty
    ps
    df
    touch
    vi
    clear
    find
    xargs
    random
    inetd
    passwd
    which
    
    chkfsys
    mkqnx6fs
    devf-generic
    devf-ram
    flashctl
    slay
    chown
    diff
    du
    openssl
    telnetd
    printf
    awk
    mkdir
    uname
    sed
    sleep
    slog2info
    
  • 在build文件中增加依賴庫

    libz.so.2
    

3、編譯生成qnx-ifs.bin鏡像文件,將鏡像拷貝到SD卡

4、將SD卡裝入開發板,啓動QNX系統

5、在命令行中執行下述命令

  • 手動創建第一步刪除的文件,並將原來的文件內容複製粘貼到新文件中(目的是爲了對該文件獲取讀寫權限)

    # mkdir /etc
    # touch /etc/passwd
    # touch /etc/profile
    # cat /etc/backup_passwd >> /etc/passwd 
    # cat /etc/backup_profile >> /etc/profile
    
    # mkdir /etc/default
    # touch /etc/default/passwd
    # touch /etc/default/login
    # cat /etc/default/backup_passwd >> /etc/default/passwd
    # cat /etc/default/backup_login >> /etc/default/login
    
  • 再在 /etc/profile文件末尾追加如下代碼(目的是爲了遠程SSH登陸以後可以使用命令行):

    export PATH=:/proc/boot:/sbin:/bin:/usr/sbin:/usr/bin
    export LD_LIBRARY_PATH=/proc/boot:/lib:/usr/lib:/lib/dll:/usr/lib/graphics:/usr/lib/graphics/am335x
    export GRAPHICS_ROOT=/usr/lib/graphics/am335x
    
  • 在命令行依次執行如下命令

    # mkdir /etc/ssh
    # ssh-keygen -q -t dsa -f /etc/ssh/ssh_host_dsa_key -N ''
    # ssh-keygen -q -t rsa -f /etc/ssh/ssh_host_rsa_key -N ''
    # ssh-keygen -t rsa -f /etc/ssh/ssh_host_key -b 1024  //直接回車即可,不要創建密碼
    # ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key  //直接回車即可,不要創建密碼
    # ssh-keygen -A 
    # mkdir /root
    # mkdir -p /var/chroot/sshd/
    # chown -R root.root /var/chroot/sshd/
    # chmod 744 /var/chroot/sshd/
    # /usr/sbin/sshd 
    

6、給root賬戶生成密碼

  • SSH遠程登錄要求root賬戶必須有密碼

    # passwd root
    

7、至此,SSH搭建成功

發佈了64 篇原創文章 · 獲贊 93 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章