文章目錄
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