openssh 在arm linux 嵌入式平台交叉编译,100%成功运行
2019-07-12 17:23发布
生成海报
本文真实地址:http://blog.csdn.net/code_style/article/details/61928328
1、openssh版本,最新版本openssh-7.5P1.tar.gz,下载地址:https://openbsd.hk/pub/OpenBSD/OpenSSH/portable/openssh-7.5p1.tar.gz
2、交叉编译环境:arm-linux-gnueabi-gcc 4.8
3、由于openssh依赖zlib和openssl,所以编译openssh之前,先要编译出zlib库和openssl库,最新版本的openssh-7.5P1.tar.gz 必须配合相应的openssl版本(OpenSSL
>= 0.9.8f < 1.1.x)才能编译成功,否则会出现各种宏找不到的错误 。具体编译openssh以及zlib,openssl不说了,网上一搜一大堆,推荐:http://www.veryarm.com/892.html
4、打包步骤,将以下脚本放到openssh目录下运行,可以把所有需要打包的文件自动归类到tar_openssh目录下,如果你拷贝粘贴,很可能就会出现脚本不兼容的问题(拷贝脚本到linux下,用dos2unix(sudo
apt-get install dos2unix)工具修改一下文件,不然脚本运行错误)
#!/bin/sh
mkdir -p ./tar_openssh
#scp sftp ssh ssh-add ssh-agent ssh-keygen ssh-keyscan
cp -rf scp ./tar_openssh
cp -rf sftp ./tar_openssh
cp -rf ssh ./tar_openssh
cp -rf ssh-add ./tar_openssh
cp -rf ssh-agent ./tar_openssh
cp -rf ssh-keygen ./tar_openssh
cp -rf ssh-keyscan ./tar_openssh
#moduli ssh_config sshd_config
cp -rf moduli ./tar_openssh
cp -rf ssh_config ./tar_openssh
cp -rf sshd_config ./tar_openssh
#sftp-server ssh-keysign
cp -rf sftp-server ./tar_openssh
cp -rf ssh-keysign ./tar_openssh
#sshd
cp -rf sshd ./tar_openssh
echo "all file cp to ./tar_openssh dir"
5、把以下脚本放到tar_openssh目录,再把tar_openssh目录拷贝到目标板上,修改untar_pkg.sh权限为可执行,然后运行该脚本,它会自动把文件部署到对应的目录
#!/bin/sh
mkdir -p /usr/local/bin/
mkdir -p /usr/local/sbin/
mkdir -p /usr/local/etc/
mkdir -p /usr/local/libexec/
mkdir -p /var/run/
mkdir -p /var/empty/
chmod 744 smv sftp ssh ssh-add ssh-agent ssh-keygen ssh-keyscan ssh_config sftp-server ssh-keysign sshd
#smv sftp ssh ssh-add ssh-agent ssh-keygen ssh-keyscan 拷贝到目标板/usr/local/bin
mv -rf smv /usr/local/bin/
mv -rf sftp /usr/local/bin/
mv -rf ssh /usr/local/bin/
mv -rf ssh-add /usr/local/bin/
mv -rf ssh-agent /usr/local/bin/
mv -rf ssh-keygen /usr/local/bin/
mv -rf ssh-keyscan /usr/local/bin/
#moduli ssh_config sshd_config 拷贝到目标板 /usr/local/etc
chmod 620 moduli
mv -rf moduli /usr/local/etc
chmod 644 ssh_config
mv -rf ssh_config /usr/local/etc
chmod 600 sshd_config
mv -rf sshd_config /usr/local/etc
#sftp-server ssh-keysign 拷贝到目标板 /usr/local/libexec
mv -rf sftp-server /usr/local/libexec
mv -rf ssh-keysign /usr/local/libexec
#sshd 拷贝到目标板 /usr/local/sbin/
mv -rf sshd /usr/local/sbin/
6、
在主机上(win7使用openssh win32版本,Linux直接openssh)生成公钥和私钥,然后把所有密钥复制到目标板上/usr/local/etc目录下
win7版本最新的openssh下载路径:https://github.com/PowerShell/Win32-OpenSSH/releases
7、在win7主机上生成私钥和公钥(直接切换到openssh安装目录,再运行,不然会提示不是内部或外部命令),Linux上是一样的命令
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 ""
8、把所有生成的key文件,包括.pub和无扩展名的,都拷贝到开发板的/usr/local/etc目录下,按照如下权限修改
#chmod 600 ssh_host_dsa_key ssh_host_rsa_key ssh_host_ecdsa_key ssh_host_ed25519_key
#chmod 644 ssh_host_dsa_key.pub ssh_host_rsa_key.pub ssh_host_ecdsa_key.pub ssh_host_ed25519_key.pub
9、
修改pts挂载点,这一步非常关键,不然后面用PuttY工具连接开发板时候会出现Server refused to allocate pty错误
注意,在fstab文件最后增加的那一行,一定要严格复制如下的文本,否则格式不对,执行mount /dev/pts的时候,会提示mount: can't find /dev/pts in /etc/fstab
#rm -rf mknod
#mknod -m 666 /dev/ptmx c 5 2
#chmod 666 /dev/ptmx
#mkdir /dev/pts
#mount /dev/pts
在/etc/fstab文件中增加最后一行
none /dev/pts devpts gid=5,mode=620 0 0
10、最后执行mount /dev/pts如果没有什么错误,就说明没问题了
11、运行sshd
常规软件的运行方式是./程序名,结果./sshd就提示如下错误
sshd re- exec requires execution with an absolute path
原来是要这样的,不需要点,直接输入/usr/local/sbin/sshd,回车,如果key没有错误的话就可以运行了
12、sshd服务运行起来以后,在PC客户端上直接配置好对应的ssh_config文件,然后ssh登录到arm
linux即可
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮