dropbear实现免密码ssh登录或scp文件传输

dropbear实现免密码ssh登录或scp文件传输基于 dropbear 服务实现 scp 的免密传输 基本思路是 将主机 A 通过 dropbearkey 生成公钥和私钥 并将公钥的内容复制到主机 B 的 authorized keys 文件内 从而建立主机 B 对主机 A 的信任关系

大家好,欢迎来到IT知识分享网。

        dropbear是轻量级的sshd服务器,与OpenSSH相比,他更简洁,更小巧,运行起来占用的内存也更少,因此被很多嵌入式设备所使用。SSH:Secure Shell (SSH) 是一个允许两台主机之间通过安全的连接进行数据交换的网络协议。SSH采用公钥加密技术来验证远程主机,以及(必要时)允许远程主机验证用户。scp是基于SSH协议的文件传输。在某些应用项目中,现场的嵌入式设备(linux内核)可能需要将数据或日志传输到后端的服务器上,此时可借助于shell脚本,利用scp定时传输数据至后台。因脚本是自动执行,则要求scp时不用输入服务器密码。

        网上关于scp免密传输的文章很多,此文主要是学习记录,并给有需要的人参考。scp免密码输入传输文件的基本思路是:将主机A的SSH生成公钥和私钥,并将公钥的内容复制到主机B的 authorized_keys 文件内,从而建立主机B对主机A的信任关系。如此,主机A通过SSH连接主机B,或通过SCP向主机B传输文件就可不用输入密码连接。具体实现主要分以下四个步骤:

第一步:主机A生成公钥

假设主机A的SSH是基于dropbear实现,一般路径为:/etc/dropbear/

dropbear实现免密码ssh登录或scp文件传输

可见,该路径下已有2个密钥文件。若没有,也可以通过如下指令生成:

dropbearkey -t dss -f /etc/dropbear/dropbear_dss_host_key

dropbearkey -t rsa -s 1024 -f /etc/dropbear/dropbear_rsa_host_key

关于dropbearkey的用法说明如下:

Usage: dropbearkey -t <type> -f <filename> [-s bits]

-t  type Type of key to generate. One of:  rsa

-f  filename  Use filename for the secret key. ~/.ssh/id_dropbear is recommended for client keys.

-s  bits Key size in bits, should be a multiple of 8 (optional)

-y  Just print the publickey and fingerprint for the  private key in <filename>.

通过密钥文件生成公钥Key:

dropbearkey -y -f /etc/dropbear/dropbear_rsa_host_key  >> /etc/dropbear/authorized_keys_01

生成的公钥Key文件名字可以自己命名,此处命名为:authorized_keys_01

第二步:主机A的公钥加到主机B的authorized_keys中

进入主机B的用户 ~/.ssh 路径下( 即 /home/xxx/.ssh,可能是一个隐藏文件,可以在 /home/xxx  目录下用 ls -al 查看 。xxx表示系统的用户名称)。若没有该目录,则执行ssh-keygen可生成。ssh-keygen即是生成密钥文件,生成的密钥文件即是保存在~/.ssh 路径下。

将上述的主机A生成的authorized_keys_01中的【第二行】内容复制到~/.ssh 路径下的authorized_keys文件末尾。若没有该文件,可以手动建立一个该文件,命名为authorized_keys。

第三步:修改权限

需要修改上述的/home/xxx 、 ~/.ssh 和authorized_keys权限。

authorized_keys 文件必须是600权限(也就是-rw——-)或者644;

~/.ssh 目录必须是700权限,即drwx——;

/home/xxx 目录必须是755权限,即drwxr-xr-x。

网上有文章说,第(3)条权限不能为777,必须为755,否则无法建立信任关系。

第四步:修改主机B的sshd_config设置

修改主机B的系统sshd配置文件( /etc/ssh/sshd_config ),使允许使用密钥免密登录配置。配置项如下:

RSAAuthentication yes

PubkeyAuthentication yes

AuthorizedKeysFile      .ssh/authorized_keys

在sshd_config中去除相关项前面的注释符#,并改为上述的值。重启sshd,service sshd restart 或 systemctl restart sshd.service。

按上述四步操作完成后,从主机A ssh连接或scp主机B,便不需要输入密码了!

但dropbear免密码ssh或scp需要按如下指令格式:

ssh -i /etc/dropbear/dropbear_rsa_host_key user@hostB-ip

scp -i /etc/dropbear/dropbear_rsa_host_key user@hostB-ip

即需要指定主机A所使用的密钥文件。(OpenSSH好像不需要 -i,直接ssh或scp就可以)。

作者补充:有的ssh服务端可能默认不支持RSA密码算法,导致免密SSH或SCP无法生效,此时需要在SSH服务端的 /etc/ssh/sshd_config 中添加:PubkeyAcceptedAlgorithms +ssh-rsa  。基允许SSH服务端公钥密码算法支持RSA。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/125448.html

(0)
上一篇 2025-09-27 13:15
下一篇 2025-09-27 13:20

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信