Qt的 OpenSSH配置

来源:互联网 发布:农业 知乎 编辑:程序博客网 时间:2024/06/05 11:22

移植openssh7.1成功连接Qt5。
主要步骤:
1. 下载源码和编译
  参考:http://blog.csdn.net/evenness/article/details/16881975,
  http://www.veryarm.com/892.html
  我的好像不需要下载openssl and zlib,直接编译openssh
  

./configure --host=arm-linux-gnueabihf CC=/home/david/ti-sdk-am335x-evm-06.00.00.00/linux-devkit/sysroots/i686-arago-linux/usr/bin/arm-linux-gnueabihf-gcc AR=/home/david/ti-sdk-am335x-evm-06.00.00.00/linux-devkit/sysroots/i686-arago-linux/usr/bin/arm-linux-gnueabihf-ar 然后make

  
2. 拷贝文件到目录和生成key,这里还是参见http://www.veryarm.com/892.html
确保目标板上有以下目录,若没有,则新建:

/usr/local/bin
/usr/local/etc
/usr/libexec
/var/run
/var/empty

将PC机 /home/veryarm/ssh/openssh-6.6p1/ 目录下文件拷贝到目标板系统中,具体为:

scp、sftp、ssh sshd、ssh-add、ssh-agent、ssh-keygen、ssh-keyscan共8个文件拷贝到目标板/usr/local/binmoduli、ssh_config、sshd_config共3个文件拷贝到目标板 /usr/local/etcsftp-server、ssh-keysign 共2个文件拷贝到目标板 /usr/libexec

生成Key文件

在目标版 /usr/local/etc/ 目录下生成key文件:

cd /usr/local/etc/
ssh-keygen -t rsa -f ssh_host_rsa_key -N “”
ssh-keygen -t dsa -f ssh_host_dsa_key -N “”
ssh-keygen -t ecdsa -f ssh_host_ecdsa_key -N “”
ssh-keygen -t dsa -f ssh_host_ed25519_key -N “”

修改 ssh_host_ed25519_key 权限为 600:

$ chmod 600 ssh_host_ed25519_key

其中 ssh_host_ed25519_key 是SSH第二版协议用到的key,需要修改权限,否则会提示以下错误:

Permissions 0644 for ‘/usr/local/etc/ssh_host_ed25519_key’ are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: /usr/local/etc/ssh_host_ed25519_key
Could not load host key: /usr/local/etc/ssh_host_ed25519_key

目标板用户信息

打开 /etc/passwd 文件,在最后添加下面这一行:

sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

如果开发板的 root 用户还没有密码,键入以下命令然输入两次密码来修改,否其他设备无法连:

$ passwd root

测试

在目标板上运行:

$ /usr/local/bin/sshd

可以用 ps 命令查看sshd是否在工作。

如果运行的过程中有提示缺少动态连接库,可以在主机上搜索相应文件,拷贝到目标板/lib/目录下面,注意创建软连接!
OK!不出意外的话可以成功,
3. 解决错误和修改配置文件
开发板上运行了/usr/loacl/bin/ssh之后,在ubuntu上连接不上,老是会提示密码Permission denied, please try again. 这里需要修改开发板上的sshd_config文件,将PermitRootLogin 这个选项前面的#去掉,并且把后面那个单词改成yes,也就是PermitRootLogin yes这个必须有。
当用QT连接小机时会报另一个错Client list was: aes128-cbc,3des-cbc. Server list was chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr.
那么参考http://askubuntu.com/questions/563711/error-connecting-qt-creator-to-raspberry-pi-using-ssh
修改sshd_config文件,增加:

Ciphers +aes128-cbc
0 0