相关开源项目链接
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
相关目录路径
/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
编译
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
编辑passwd文件
vi /etc/passwd
在最后一行添加
sshd:x:74:74:Privilege-separated
SSH:/var/empty/sshd:/sbin/nologin
将ssh加入开机启动项
vi /etc/init.d/rcS
/usr/local/bin/sshd
设置root密码
passwd
重启开发板
reboot
检查ssh是否开机运行
ps | grep ssh
Xshell连接
FileZilla文件传输软件
ubuntu 远程拷贝
sudo scp scptest.txt root@192.168.10.230:/tmp
开发板收到ubuntu发送过来的文件
以上即arm-linux移植OpenSSH的全过程。
如果文章对您有帮助,欢迎移至上方按钮打赏博主;