嵌入式技术分享

Embedded Technology Sharing

OpenSSH在arm-linux上的移植

《OpenSSH在arm-linux上的移植》

相关开源项目链接
zlib: https://github.com/madler/zlib
openssl: https://github.com/openssl/openssl
openssh: https://github.com/openssh/openssh-portable

移植的注意点依旧是交叉编译器版本与开发板内核根文件系统编译时版本一致。

查看交叉编译器所在位置
whereis arm-none-linux-gnueabi-gcc
/usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-gcc

创建相关目录
cd ~
mkdir openssh
cd openssh
mkdir install source
cd install
mkdir openssh openssl zlib
《OpenSSH在arm-linux上的移植》

相关目录路径
/home/cheng/openssh/install/zlib
/home/cheng/openssh/install/openssl
/home/cheng/openssh/install/openssh

下载相关压缩包
cd source
wget https://github.com/madler/zlib/archive/v1.2.3.tar.gz
wget https://github.com/openssl/openssl/archive/OpenSSL_1_0_1t.tar.gz
wget https://github.com/openssh/openssh-portable/archive/V_7_1_P2.tar.gz

解压
tar -vxf v1.2.3.tar.gz

进入目录,执行命令,生成Makefile
cd zlib-1.2.3/
./configure –prefix=/home/cheng/openssh/install/zlib

对Makefile进行详细配置
vi Makefile
CROSS=arm-none-linux-gnueabi-
CC=$(CROSS)gcc
LDSHARED=$(CROSS)gcc
CPP=$(CROSS)gcc -E
AR=$(CROSS)ar rc
《OpenSSH在arm-linux上的移植》

编译
make

执行命令,生成相关文件
make install

OpenSSL编译
cd ..
tar -vxf OpenSSL_1_0_1t.tar.gz
cd openssl-OpenSSL_1_0_1t/

生成Makefile
./Configure –prefix=/home/cheng/openssh/install/openssl linux-elf-arm -DB_ENDIAN linux:’arm-none-linux-gnueabi-gcc’

编译
make

执行命令,生成相关文件
make install

OpenSSH编译
cd ..
tar -vxf V_7_1_P2.tar.gz
cd openssh-7.1p2/

生成Makefile
./configure –host=arm-none-linux –with-libs –with-zlib=/home/cheng/openssh/install/zlib/ –with-ssl-dir=/home/cheng/openssh/install/openssl/ –disable-etc-default-login CC=/usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-gcc AR=/usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-ar

编译
make

生成密钥
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 “”

赋予密钥600权限
chmod 600 ssh_host_*_key

挂载U盘
sudo mount /dev/sdb1 /mnt

在U盘上创建目录
sudo mkdir /mnt/arm-linux-ssh
sudo mkdir /mnt/arm-linux-ssh/usrlibexec
sudo mkdir /mnt/arm-linux-ssh/usrlocaletc
sudo mkdir /mnt/arm-linux-ssh/usrlocalbin

拷贝编译生成的文件到U盘
sudo cp -r scp sftp ssh sshd ssh-add ssh-agent ssh-keygen ssh-keyscan /mnt/arm-linux-ssh/usrlocalbin
sudo cp -r moduli ssh_config sshd_config /mnt/arm-linux-ssh/usrlocaletc
sudo cp -r sftp-server ssh-keysign /mnt/arm-linux-ssh/usrlibexec
sudo cp -r ssh_host_*_key /mnt/arm-linux-ssh/usrlocaletc

取消挂载
sudo umount /mnt

开发板,挂载TF卡
mount /dev/mmcblk1p1 /mnt

删除开发板原有的文件,调试用,第一次操作不用删除
rm -rf /usr/libexec
rm -rf /usr/local/etc
rm -rf /usr/local/bin

创建相关文件夹
mkdir -p /usr/libexec /usr/local/etc /usr/local/bin

复制文件到新创建的文件夹
cp -r /mnt/arm-linux-ssh/usrlibexec/* /usr/libexec/
cp -r /mnt/arm-linux-ssh/usrlocaletc/* /usr/local/etc/
cp -r /mnt/arm-linux-ssh/usrlocalbin/* /usr/local/bin/

在U盘转存后,权限可能又变化,重新赋予密钥600权限
chmod 600 /usr/local/etc/ssh_host_*_key

修改ssh配置文件,允许客户端使用root账户登录
vi /usr/local/etc/sshd_config
PermitRootLogin yes
《OpenSSH在arm-linux上的移植》

编辑passwd文件
vi /etc/passwd

在最后一行添加
sshd:x:74:74:Privilege-separated
SSH:/var/empty/sshd:/sbin/nologin
《OpenSSH在arm-linux上的移植》

将ssh加入开机启动项
vi /etc/init.d/rcS
/usr/local/bin/sshd
《OpenSSH在arm-linux上的移植》

设置root密码
passwd
《OpenSSH在arm-linux上的移植》

重启开发板
reboot

检查ssh是否开机运行
ps | grep ssh
《OpenSSH在arm-linux上的移植》

Xshell连接
《OpenSSH在arm-linux上的移植》

FileZilla文件传输软件
《OpenSSH在arm-linux上的移植》

ubuntu 远程拷贝
sudo scp scptest.txt root@192.168.10.230:/tmp
《OpenSSH在arm-linux上的移植》

开发板收到ubuntu发送过来的文件
《OpenSSH在arm-linux上的移植》

以上即arm-linux移植OpenSSH的全过程

如果文章对您有帮助,欢迎移至上方按钮打赏博主;

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注