SSH远程登陆

SSH远程登陆 Freya 2025-01-17 09:00:58 461

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

易百纳社区


声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
Freya
红包 5 1 评论 打赏
评论
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
相关专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
Freya
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-专栏模块

审核失败

失败原因
备注
拼手气红包 红包规则
祝福语
恭喜发财,大吉大利!
红包金额
红包最小金额不能低于5元
红包数量
红包数量范围10~50个
余额支付
当前余额:
可前往问答、专栏板块获取收益 去获取
取 消 确 定

小包子的红包

恭喜发财,大吉大利

已领取20/40,共1.6元 红包规则

    易百纳技术社区