Zedboard: Open-SSH配置
0赞Zedboard: Open-SSH配置
SSH(SecureShell)支持基于加密证书模式的远程登录,包括了对SSH、SCP和SFTP的全面支持,是目前广泛采用的安全登录协议,替代以前不安全的Telnet协议。
SSH包括2个部分,服务端的SSHD(SecureShellDaemon)和SSH用户端。我们通常所说的用SSH登录到某某主机,指的是用SSH用户端登录到某台主机(该主机运行了SSHD服务端程序)。下面简要介绍在ZED板上配置open-ssh的过程。
1. 下载源码
从git.xilinx.com上下载zlib,open-ssl,open-ssh源码。
2. SSH配置
2.1 Zlib1.2.5安装
CHOST=arm-xilinx-linux-gnueabi ./configure -prefix=/home/telantan/rootfs
make; make install
2.2 Open-ssl1.0.0e安装
./Configure linux-armv4 shared --prefix=/home/telantan/rootfs
make
make install
2.3 open-ssh5.2安装
./configure --host=arm-xilinx-linux-gnueabi --with-libs --with-zlib=/home/telantan/rootfs --with-ssl-dir=/home/telantan/rootfs --disable-etc-default-login CC= arm-xilinx-linux-gnueabi-gcc AR= arm-xilinx-linux-gnueabi-ar
配置过程中,会报如下错误,找不到对应的配置选项,
checking build system type... Invalid configuration `arm-xilinx-linux-gnueabi-gcc': machine `arm-xilinx-linux-gnueabi' not recognized
configure: error: /bin/sh ./config.sub arm-xilinx-linux-gnueabi-gcc failed
解决的办法是在.config.sub中添加如下代码,
arm-xilinx-*)
echo Xilinx Zynq found
basic_machine=arm-xilinx
os=-linux
;;
接着执行make 即可, 不需要make install
make
手动将编译生成的命令拷贝到对应的位置:
Ø 将scp sftp ssh ssh-add ssh-agent ssh-keygen ssh-keyscan复制到/home/telantan/rootfs/usr/bin中
Ø 将moduli ssh_config sshd_config复制到/usr/local/etc
Ø 将ssh-keysign sftp-server 复制到/home/telantan/rootfs/usr/libexec
Ø 将sshd复制到/usr/local/sbin目录(也可以放在/sbin或/usr/sbin);
Ø 同时建立/home/telantan/rootfs/var/empty目录
2.4 建立sshd用户
直接修改/etc/passwd、/etc/group文件
在passwd中加入
sshd::103:103::/var/run/sshd:/bin/sh
2.5 生成Key
ssh-keygen是交叉编译的,只能在客户端运行,所以下面的命令需要在Zed板上运行,
ssh-keygen -t rsa1 -f ssh_host_key -N ""
ssh-keygen -t rsa -f ssh_host_rsa_key -N ""
ssh-keygen -t dsa -f ssh_host_dsa_key -N ""
ssh-key -t ecdsa -f ssh_host_ecdsa_key -N ""
通过之前介绍的tftp协议,将生成的key文件上传到宿主机RHEL6.3,
tftp -pr ssh_host_dsa_key 192.168.1.50
在宿主机REHL6.3,将接收到的key文件拷贝到/home/telantan/rootfs/usr/local/etc目录中,
最后重新生成文件系统,
3. SSH服务启动
3.1 SSH远程登陆
在Zed客户端启动sshd,
/usr/local/sbin/sshd
本地通过PuTTY以SSH方式远程登陆Zed,192.168.1.10为Zed客户端的IP地址
输入用户名和密码,如果Zed客户端没有密码,需要用passwd命令设置,否则无法执行ssh登陆,
3.2 sftp-server服务
SFTP(Secure File Transfer Protocol )安全文件传输子系统,通过加密方式传输数据,其本身没有单独的守护进程,它必须使用sshd的守护进程(端口号默认是22)来完成相应的连接操作,所以从某种意义上来说,SFTP并不像一个服务器程序,而更像是一个客户端程序。 XILINX SDK工具支持以sftp方式与Zed客户端通讯,一个典型的应用场景是在SDK中开发Linux的应用场景,编译完成后,通过sftp方式下载到Zed客户端运行调试,下面简述其步骤:
Ø SDK中Window > Open Perspective > Other ….
Ø 在Remote Systems窗口中,新建一个连接
Ø 选择SSH Only,
Ø 在HOST name中直接输入ZED客户端的IP地址,直接Finish,
Ø 在Remote Systems窗口中,发现多出了一个192.168.1.10的地址,点到Root浏览时,会弹出对话库,要求输入ZED客户端用户名和密码,
Ø 如果通过用户名称密码验证,会弹出如下Warning对话框,直接点Yes,
Ø 此时,ZED客户端的文件系统就可以在SDK中直接浏览了,
Ø 切换到C/C++开发环境,
Ø 新建一个Hello World Linux应用程序,注意software platform选Linux,
Ø 在Debug配置时,选择Remote ARM Linux Application,Connection选择192.168.1.10,
Remote Absolute File Path设为/tmp/linux_hello_world_1.elf,点Debug
Ø 进入Debug界面,直接运行,在console中输出hello world