SSH远程登陆
openssh主要依赖于zlib和openssl,haveged和sshpass也起到重要的作用。
haveged:是一个开源的随机数生成器,主要用于Linux系统中生成高质量的随机数。通过收集系统中的硬件噪声,并将其转换为高质量的随机数,这些随机数可以用于加密、认证、签名等安全操作中。在Linux系统中,随机数是非常重要的资源,尤其是在加密和认证等安全操作中。由于系统生成的随机数有限,有时会出现随机数不足的情况,haveged可以生成更多的随机数以解决这一问题。
sshpass:一个非交互式SSH密码认证工具,它允许用户在不需要手动输入密码的情况下自动执行SSH连接。它可以被集成到自动化脚本中,使得脚本能够自动执行SSH连接,无需人工干预,部分示例如下。
例子:
1、使用 -p 参数从命令行方式传递密码
sshpass -p user_password ssh user_name@192.168.1.2 【登录远程机器】
sshpass -p user_password scp -P22 root@192.168.1.2:/home/test ./ 【远程机器/home/test 复制到本机当前目录】
还可以加参数 -q 【去掉进度显示】
2、使用-f 参数从文件读取密码
echo "user_password" > user.passwd
sshpass -f user.passwd ssh user_name@192.168.1.2
3、使用-e 参数从环境变量获取密码
export SSHPASS="user_password"
sshpass -e ssh user_name@192.168.1.2
4、使用-o StrictHostKeyChecking=no 表示远程连接时不提示是否输入yes/no
sshpass -p user_password ssh -o StrictHostKeyChecking=no user_name@192.168.1.2
5、使用sshpass远程免密,在远程主机上执行shell命令,如下远程执行命令:touch /opt/file.txt
sshpass -p user_password ssh -o StrictHostKeyChecking=no user_name@192.168.1.2 touch /opt/file.txt
[注:shell命令要和sshpass命令写在一行]
6、sshpass远程ssh到目标机器执行命令:
sshpass -p user_password ssh -o StrictHostKeyChecking=no 用户@IP "cmd"
一般若是提示命令未找到,大概原因是使用了命令的别名,如:ll 得换成 ls -l
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
1 下载软件包
下载软件包并移植到<SDK_DIR>/open_source/openssh目录下
● 方式一:官网下载
haveged-1.9.2.tar.gz:
https://www.issihosts.com/haveged/haveged-1.9.2.tar.gz
- 1
openssh-8.3p.1.tar.gz:
http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.3p1.tar.gz
- 1
openssl-1.1.1.tar.gz:
https://gitcode.com/open-source-toolkit/3e8dc/overview?utm_source=tools_gitcode&index=top&type=card&&isLogin=1
- 1
sshpass-1.10.tar.gz:
https://sourceforge.net/projects/sshpass/files/sshpass/1.10/
- 1
zlib-1.2.12.tar.gz:
https://gitcode.com/open-source-toolkit/114ac/overview?utm_source=tools_gitcode&index=top&type=card&&isLogin=1
- 1
● 方式二:从社区获取
工具包路径:【易百纳】XXXXXX_XXXX型开发板_VX.X\03_软件资料\06_二次开发\03_开源移植\openssh_tools
除上述五个工具包外还需从社区获取zlib-1.2.12.patch补丁文件
2 编译移植
步骤一:
解压工具压缩包,创建_install目录
cd <SDK_DIR>/open_source/openssh
tar xf haveged-1.9.2.tar.gz
tar xf sshpass-1.10.tar.gz
tar xf openssl-1.1.1h.tar.gz
tar xf openssh-8.3p1.tar.gz
tar xf zlib-1.2.12.tar.gz
mkdir _install
- 1
- 2
- 3
- 4
- 5
- 6
- 7
步骤二:
编译haveged:
cd haveged-1.9.2
./configure --host=aarch64-v01c01-linux-gnu --prefix=/
make -j 20
make install DESTDIR=$(pwd)/../_install
- 1
- 2
- 3
- 4
编译sshpass:
cd sshpass-1.10
./configure --host=aarch64-v01c01-linux-gnu --prefix=/
make -j 20
make install DESTDIR=$(pwd)/../_install
- 1
- 2
- 3
- 4
编译openssl:
cd openssl-1.1.1h
./Configure linux-elf no-asm no-async --prefix=/ \
--cross-compile-prefix=aarch64-v01c01-linux-gnu-
make -j 20
make install DESTDIR=$(pwd)/../_install
- 1
- 2
- 3
- 4
- 5
编译zlib:
cd zlib-1.2.12
patch -p1 < ../zlib-1.2.12.patch
prefix=/ CC=aarch64-v01c01-linux-gnu-gcc \
CFLAGS="-fstack-protector-strong -fPIC" \
LDFLAGS="-Wl,-z,relro -Wl,-z,now -Wl,-z,noexecstack" ./configure
make -j 20
make install DESTDIR=$(pwd)/../_install
- 1
- 2
- 3
- 4
- 5
- 6
- 7
编译openssh:
cd openssh-8.3p1
./configure --host=aarch64-v01c01-linux-gnu --prefix=/ \
--with-libs --disable-strip \
--with-zlib=$(pwd)/../_install \
--with-ssl-dir=$(pwd)/../_install
make -j 20
make install DESTDIR=$(pwd)/../_install
- 1
- 2
- 3
- 4
- 5
- 6
- 7
如果出现下列问题,执行以下命令解决
ln -s /opt/linux/x86-arm/aarch64-v01c01-linux-gnu-gcc/target/lib/ld-linux-aarch64.so.1 /lib/ld-linux-aarch64.so.1
- 1
出现以下问题可以忽略,只要对应工具成功生成即可
说明:上述编译适用于Hi3519DV500芯片,若更换芯片,编译器不同,需自行修改对应编译器。
步骤三:
拷贝对应文件到板端
步骤四:
修改sshd_config文件
修改前:
修改后:
步骤五:
查看是否有ssh_user的值
echo $ssh_user
- 1
如果没有则将如下信息追加到/etc/passwd文件中
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
- 1
步骤六:
查看是否存在/var/empty/sshd目录,如果不存在删除/var/empty目录,创建新的/var/empty/sshd目录,创建/etc/ssh目录。
步骤七:
启动haveged服务,收集守护进程,用于生成加密随机数。
说明:
● -F:这个选项强制haveged以前台模式运行。默认情况下,haveged会在后台运行
● -d 32:这个选项设置熵池的深度为32位。熵池深度越大,生成的随机数质量越高
● -w 1024:这个选项设置熵池的宽度为1024位。熵池宽度越大,生成随机数的速度越快
● --verbose=1:这个选项设置详细模式的级别为1。详细模式可以输出额外的信息,帮助用户了解haveged的运行状态。数字越大,输出的信息越详细
● &:这个符号将命令放入后台执行,即使关闭终端,haveged也会继续运行
/usr/bin/haveged -F -d 32 -w 1024 --verbose=1 &
- 1
步骤八:
执行以下命令,设置root用户密码(SSH登陆时输入的密码)
passwd root
- 1
步骤九:
执行以下命令在指定/etc/ssh目录下生成密钥
ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N ""
ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -N ""
ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ""
ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N ""
- 1
- 2
- 3
- 4
● 说明:
sshd_config文件中指定SSH服务器用于RSA算法的主机密钥文件路径为 /etc/ssh 目录,所以指定生成密钥文件的路径。
步骤十:
最后启动SSH守护进程
/usr/bin/sshd -f /etc/sshd_config
- 1
3 功能验证
设置板端IP
在另一终端执行以下命令后输入密码连接即可远程登陆
ssh root@<板端IP>
- 1
- 分享
- 举报
-
懒人精 2025-02-18 10:12:56回复 举报可以用 移植 dropbear ,dropbear依赖少,只依赖zlib,更小巧。
-
UncleRoderick 回复 懒人精 2025-03-20 11:17:39回复 举报大佬可以写一篇这块的专栏,分享一下
-
懒人精 回复 UncleRoderick 2025-03-20 13:59:17回复 举报可以哦,刚发现你在另一篇文章里面回我了。
-
懒人精 回复 UncleRoderick 2025-03-20 14:04:21回复 举报https://blog.csdn.net/qq_31670107/article/details/145610816
-
-
浏览量:1800次2018-02-08 16:34:39
-
浏览量:4822次2021-03-17 16:55:30
-
浏览量:2912次2018-01-22 14:40:15
-
浏览量:1769次2018-04-13 15:06:55
-
浏览量:2949次2017-11-08 13:22:30
-
浏览量:1853次2018-01-20 16:40:06
-
浏览量:2113次2018-05-31 16:53:10
-
浏览量:1491次2018-04-28 22:12:57
-
浏览量:791次2023-07-27 14:00:10
-
浏览量:957次2023-10-24 16:25:46
-
浏览量:3927次2020-10-26 11:47:36
-
浏览量:1722次2018-02-05 01:00:59
-
浏览量:1399次2023-06-07 14:32:02
-
浏览量:10120次2020-12-06 23:28:09
-
浏览量:2923次2020-10-09 17:33:37
-
浏览量:3627次2017-12-12 19:07:56
-
浏览量:2384次2020-09-21 19:34:46
-
浏览量:2036次2020-02-07 17:49:37
-
浏览量:2454次2024-01-17 17:09:14
-
广告/SPAM
-
恶意灌水
-
违规内容
-
文不对题
-
重复发帖

Freya






举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明