OpenSSH 移植
需要依赖 zlib 和 openssl 参考
-
zlib
cd $LFS/src wget https://www.zlib.net/zlib-1.2.12.tar.xz tar -xvf zlib-1.2.12.tar.xz cd zlib-1.2.12 CC=arm-linux-gnueabi-gcc ./configure --prefix=$LFS/rootfs make -j8 make install
-
openssl
cd $LFS/src wget https://www.openssl.org/source/openssl-3.0.5.tar.gz tar -xvf openssl-3.0.5.tar.gz cd openssl-3.0.5 ./Configure linux-armv4 --cross-compile-prefix=arm-linux-gnueabi- --prefix=$LFS/rootfs make -j8 make install
-
openssh
cd $LFS/src wget https://mirrors.aliyun.com/pub/OpenBSD/OpenSSH/portable/openssh-9.0p1.tar.gz tar -xvf openssh-9.0p1.tar.gz cd openssh-9.0p1 ./configure --host=arm-linux-gnueabi \ --with-ssl-dir=$LFS/rootfs/ --with-zlib=$LFS/rootfs \ --disable-etc-default-login --disable-strip make -j8
Openssh 在 make install
时有一些坑, 因为 make install 是在 x86, 它试图是在本机安装和配置, 因此会 install 失败,因此需要手动安装
安装
将分别放在 /usr/libexec
/usr/local/etc
/usr/local/bin
mkdir -p $LFS/rootfs/usr/local/bin $LFS/rootfs/usr/libexec $LFS/rootfs/usr/local/etc
# 在安装目录下
cp scp sftp ssh sshd ssh-add ssh-agent ssh-keygen ssh-keyscan $LFS/rootfs/usr/local/bin
cp sftp-server ssh-keysign $LFS/rootfs/usr/libexec
cp moduli ssh_config sshd_config $LFS/rootfs/usr/local/etc
手动安装需要手动生成 host-key
ssh-keygen -t rsa1 -f $LFS/rootfs/usr/local/etc/ssh_host_key -N ""
ssh-keygen -t dsa -f $LFS/rootfs/usr/local/etc/ssh_host_dsa_key -N ""
ssh-keygen -t rsa -f $LFS/rootfs/usr/local/etc/ssh_host_rsa_key -N ""
ssh-keygen -t ecdsa -f $LFS/rootfs/usr/local/etc/ssh_host_ecdsa_key -N ""
为 sshd 添加用户
mkdir -p $LFS/rootfs/var/empty/sshd
echo "sshd:x:74:74::/var/empty/sshd:/sbin/nologin" >> $LFS/rootfs/etc/passwd
更新系统镜像
sudo mount -o loop $LFS/dst/rootfs.img /mnt
sudo cp $LFS/rootfs/* /mnt -r
sudo umount /mnt
加入网络设置
qemu-system-arm \
-M vexpress-a9 \
-m 512M \
-kernel $LFS/dst/zImage \
-net nic -net user,hostfwd=tcp::10021-:22 \
-dtb $LFS/dst/vexpress-v2p-ca9.dtb \
-sd $LFS/dst/rootfs.img \
-append "root=/dev/mmcblk0 rw console=ttyAMA0"
主机上登录
ssh root@127.0.0.1 -p 10021
网友评论