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