Telantan

Zedboard: Open-SSH配置

0
阅读(5420)

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中添加如下代码,

clip_image001

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

clip_image002在group中加入
sshd:*:103:

clip_image003

2.5 生成Key
ssh-keygen是交叉编译的,只能在客户端运行,所以下面的命令需要在Zed板上运行,

ssh-keygen -t rsa1 -f ssh_host_key -N ""

clip_image004
ssh-keygen -t rsa -f ssh_host_rsa_key -N ""

clip_image005
ssh-keygen -t dsa -f ssh_host_dsa_key -N ""

clip_image006

ssh-key -t ecdsa -f ssh_host_ecdsa_key -N ""

clip_image007

通过之前介绍的tftp协议,将生成的key文件上传到宿主机RHEL6.3,

tftp -pr ssh_host_dsa_key 192.168.1.50 clip_image008

clip_image009

在宿主机REHL6.3,将接收到的key文件拷贝到/home/telantan/rootfs/usr/local/etc目录中,

最后重新生成文件系统,

clip_image010

clip_image012

3. SSH服务启动

3.1 SSH远程登陆

在Zed客户端启动sshd,
/usr/local/sbin/sshd

clip_image013

本地通过PuTTY以SSH方式远程登陆Zed,192.168.1.10为Zed客户端的IP地址

clip_image014

输入用户名和密码,如果Zed客户端没有密码,需要用passwd命令设置,否则无法执行ssh登陆,

clip_image015

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 ….

clip_image016

Ø 在Remote Systems窗口中,新建一个连接

clip_image017

Ø 选择SSH Only,

clip_image018

Ø 在HOST name中直接输入ZED客户端的IP地址,直接Finish,

clip_image019

Ø 在Remote Systems窗口中,发现多出了一个192.168.1.10的地址,点到Root浏览时,会弹出对话库,要求输入ZED客户端用户名和密码,

clip_image020

Ø 如果通过用户名称密码验证,会弹出如下Warning对话框,直接点Yes,

clip_image022

Ø 此时,ZED客户端的文件系统就可以在SDK中直接浏览了,

clip_image023

Ø 切换到C/C++开发环境,

clip_image024

Ø 新建一个Hello World Linux应用程序,注意software platform选Linux,

clip_image026

clip_image027

Ø 在Debug配置时,选择Remote ARM Linux Application,Connection选择192.168.1.10,

Remote Absolute File Path设为/tmp/linux_hello_world_1.elf,点Debug

clip_image029

Ø 进入Debug界面,直接运行,在console中输出hello world

clip_image031

clip_image032