使用SSH KEY访问dropbear服务


Creative Commons LicenseCreative Commons LicenseCreative Commons License

1 dropbear - lightweight SSH server

1) https://matt.ucc.asn.au/dropbear/dropbear.html
2) ubuntu安装dropbear-bin(lightweight SSH2 server and client - command line tools)

1
sudo apt install dropbear-bin

2 SSH server的登录方式

密码登录,通过密码进行登录,主要流程为:

  1. 客户端连接上服务器之后,服务器把自己的公钥传给客户端
  2. 客户端输入服务器密码通过公钥加密之后传给服务器
  3. 服务器根据自己的私钥解密登录密码,如果正确那么就让客户端登录
1
2
3
4
5
dropbear SSH server对应客户端是dbclient,而openssh server对应的客户端是ssh,dbclient和ssh是可以兼容使用的
# 使用ssh client访问server
ssh root@xxx.xxx.xxx.xxx //输入密码登录
# 使用dclient访问server
dbclient root@xxx.xxx.xxx.xxx //输入密码登录

公钥登录,指服务器放客户认证的公钥,公钥登录是为了解决每次登录服务器都要输入密码的问题,通常使用RSA加密方案,主要流程为:

  1. 客户端生成RSA公钥和私钥
  2. 客户端将自己的公钥存放到服务器
  3. 客户端请求连接服务器,服务器将一个随机字符串发送给客户端
  4. 客户端根据自己的私钥加密这个随机字符串之后再发送给服务器
  5. 服务器接受到加密后的字符串之后用公钥解密,如果正确就让客户端登录,否则拒绝。这样就不用使用密码了

公钥登录方法,本地使用的是私钥,如例子的mylogin_key.dropbear是私钥,Dropbear和openssh使用的Private key格式是不一样的,但是可以相互转换

(1) 使用dbclient

1
dbclient root@xxx.xxx.xxx.xxx -i mylogin_key.dropbear

(2) 使用ssh, 需要使用dropbearconvert命令转换成兼容openssh的key

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# (Ubuntu 16.04),ubuntu平台dropbearconvert命令不再bin目录下,需要指定路径
# /usr/lib/dropbear/dropbearconvert -h
# All arguments must be specified
# Usage: /usr/lib/dropbear/dropbearconvert <inputtype> <outputtype> <inputfile> <outputfile>
# CAUTION: This program is for convenience only, and is not secure if used on
# untrusted input files, ie it could allow arbitrary code execution.
# All parameters must be specified in order.

# The input and output types are one of:
# openssh
# dropbear

# Example:
# dropbearconvert openssh dropbear /etc/ssh/ssh_host_rsa_key /etc/dropbear_rsa_host_key

/usr/lib/dropbear/dropbearconvert dropbear openssh mylogin_key.dropbear mylogin_key.ssh

# ssh客户端可以使用转换后key来访问dropbear server
ssh root@xxx.xxx.xxx.xxx -i mylogin_key.ssh

3 如何创建dropbear公私钥对

使用dropbearkey命令创建一对公私密钥对,然后把公钥放到dropbear server上,本地client端使用私钥访问

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 创建私钥
dropbearkey -t rsa -f mylogin_key.dropbear
# 根据私钥创建公钥
dropbearkey -f mylogin_key.dropbear -y > mylogin_key.dropbear.pub

# dropbear公钥格式如下
cat mylogin_key.dropbear.pub
Public key portion is:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC+Dxn964pgLBgD/w1ZCTFs4fpPmSD61VvnEZGlv5oqeQa0IJYy
5MPVw2ikF4+tbQz6+EdMI/J9oY7Mc0nYf3D2+G6xKprB8XLYm30a2DGtbAkpWZenT2VEhfTyOI6NaWRoVZJMRoRM
+GDFAxvuRLJIOYY7PbqP24QZBYrpoSvMkW4orLr9/BsLfdI7BTRH3VTgDpFh5qm2a57Z9ga95fXu91NjljFcAnH7
3zoW4J1FvXpXpMDepJxRG4w7xBxBB5pOdkQBcZ+EdNEQ/Vv8yYSm2AKnIeTUvhZlw+VhMgwgo2JFJPSyL0dzzjr
G2DjbhjjWQeaRpj8quSfDgFv7ADjh javenly@gmail.com
Fingerprint: md5 a9:68:40:1c:9a:46:cc:80:cb:3d:d7:6c:ce:33:97:7e

4 放置公钥到dropbear server

1
2
3
拷贝mylogin_key.dropbear.pub到服务器目录~/.ssh/authorized_keys
具体的路径可能平台上有差别,如果是自己编译的dropbear可以查看源码,关键字ses.authstate.pw_dir
路径ses.authstate.pw_dir + "/.ssh/authorized_keys"
-------------本文结束感谢您的阅读-------------
如果文章对您有帮助,也可以打赏支持喔!