源码及依赖库:
zlib-1.2.11.tar.gz
openssl-1.0.1k.tar.gz
openssh-SNAP-20211220.tar.gz
编译openssl
若需openssh支持Openssl,还需进行Openssl的安装,否则跳过本小节。
解压并进入Openssl目录:
tar -zxvf openssl-1.0.1k.tar.gz
cd openssl-1.0.1k
配置环境:
export CC=arm-himix100-linux-gcc
配置Openssl:
./Configure \
--prefix=/usr/local/openssl \
--openssldir=/usr/lib/ssl \
linux-generic32 \
no-asm \
shared
编译并安装:
make
sudo make install
openssl将会被安装到/usr/local/openssl目录下。
编译zlib
解压并进入zlib目录:
tar -zxvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
配置编译环境:
export CC=arm-himix100-linux-gcc
配置zlib:
./configure --prefix=/usr/local/zlib
编译并安装:
make
make install
编译openssh
解压并进入ssh目录:
tar -zxvf openssh-SNAP-20211220.tar.gz
cd openssh
配置编译环境:
export CC=arm-linux-gnueabi-gcc
配置ssh:
./configure \
--host=arm-oe-linux-gnueabi \
--with-libs \
--with-zlib=/usr/local/zlib \
--with-ssl-dir=/usr/local/openssl \
--disable-etc-default-login
其中,各参数含义如下:
-
--host 表示运行的平台。
-
--with-libs 表示需要的库文件。
-
--with-zlib 表示库文件 zlib 的安装路径。
-
--with-ssl-dir 表示 openssl 文件的安装路径。
-
--disable-etc-default-login 表示不使用当前环境变量的编译器,所以后面配置参数时,最后直接配置 CC 和 AR 这两个编译器。
-
CC 表示设置使用的编译器。
-
AR 表示设置使用的编译器的路径。
编译:
make
安装:
将编译生成的scp、sftp、ssh、sshd、ssh-add、ssh-agent、ssh-keygen、ssh-keyscan 和ssh-rand-helper复制到目标板的/usr/local/bin目录;
将编译生成的sftp-server和ssh-keysign复制到目标板的/usr/local/libexec目录;
将编译生成的sshd_config、ssh_config 和moduli拷贝到目标板的/usr/local/etc目录;
修改/etc/passwd文件:
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin //新增一行
修改sshd_config文件:
#PermitRootLogin prohibit-password
PermitRootLogin yes
测试
运行sshd:
/usr/local/bin/sshd
这时候会提示找不到 libcrypto.so.1.0.0 。把/usr/local/openssl/lib中 libcrypto.so.1.0.0copy到开发板 /usr/lib
cp libcrypto.so.1.0.0 /usr/lib
再次运行/usr/local/bin/sshd 。 提示找不到hostkey。 这时候把 openssh 文件中的。ssh_host_dsa_key ssh_host_rsa_key copy到 电路板中 /usr/local/etc 。
并设置权限
chmod 600 ssh_host_dsa_key
chmod 600 ssh_host_rsa_key
再次运行 /usr/local/bin/sshd
没有任何提示,说明成功。
然后在电脑端用 Xshell 软件可以登录开发板。
修改电路板root登录密码方法:
登录串口,输入命令行
passwd root
出现提示
Changing password for root
New password:
输入新密码,是看不到的,回车,再次出现提示
Retype password:
再次输入新密码,出现提示
Password for root changed by root