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

        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/

可见,该路径下已有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。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hui_farmer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值