在【使用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搭建成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值