在Asus Merlin固件的Dropbear使用及免密登录

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

在Asus  Merlin固件中使用的ssh服务器为Dropbear,包括服务器和dbclient/dropbearkey等客户端工具,其中dropbearkey对应于OpenSSH的ssh-keygen工具,用于产生密钥。在Merlin固件中既可以使用dbclient,也可以使用ssh命令,但是没有ssh-keygen,可以使用dropbearkey替代,不过参数有一些区别。

为了在后台批量执行ssh程序,一般需要免输入密码进行登录。一般有两种方法,即使用密钥对加入.ssh/authorized_keys进行授权和使用sshpass在命令行自动输入密码(参见:Ubuntu上使用sshpass远程脚本免密安全交互 )。密钥对方法在使用OpenSSH和Dropbear有所不同,下面具体介绍。

OpenSSH

包括使用ssh-keygen生成密钥对,上传公钥到远程服务器home/user/.ssh/目录,添加到authorized_keys文件,使用ssh自动登录到远程服务器等步骤,具体操作过程如下:

  • SSH免密直接登录方法

DropBear

因为在Asus  Merlin固件中使用的ssh服务器为Dropbear,上面的过程可以使用Dropbear的相关工具替代。

  • root -> tmp/home/root
user@RT-AC86U-xxxx:/tmp/home/root/.ssh# ls -l -a
drwx------    2 zettariv root            80 Mar 26 13:30 .
drwx------    3 zettariv root            80 Mar 26 13:11 ..
-rwx------    1 zettariv root             0 May  5  2018 authorized_keys
-rw-rw-rw-    1 zettariv root           357 Mar 27 06:16 known_hosts

dbclient

这是Dropbear的客户端软件,其详细使用方法如下:

  • https://www.librebyte.net/en/network/dropbear-ssh-a-lightweight-alternative-to-openssh/

启动一个ssh任务的命令如下:

ssh -K 60 -fNgR 2200:localhost:22 [email protected]

在未设置密钥之前,需要交互输入密码。

步骤包括:

为了链接到 dropbear 服务器,使用 dbclient 之前, 必须通过dropbearkey创建和使用public 和 private keys。如下:

$ dropbearkey -t ecdsa -f .ssh/id_dropbear_ecdsa | grep "^ecdsa" > .ssh/id_dropbear_ecdsa.pub 
Generating key, this may take a while...

如果使用rsa,如下:

dropbearkey -t rsa -f .ssh/id_dropbear_rsa | grep "ssh-rsa" > .ssh/id_dropbear_rsa.pub

# 简化命令,需要自行提取并创建id_dropbear.pub文件
# dropbearkey -t rsa -f ~/.ssh/id_dropbear_rsa -y

显示公钥信息:

nano .ssh/id_dropbear_rsa.pub

首先上传到远程服务器,如下:

scp .ssh/id_dropbear_rsa.pub [email protected]:~/.ssh

把公钥信息复制/粘贴,添加到home/user/.ssh/authorized_keys文件中。

user@openbox01:~/.ssh$ nano authorized_keys

然后,再次执行上面的命令,就不再提示输入密码了。

ssh -y -K 60 -fNgR 2200:localhost:22 [email protected] -i /root/.ssh/id_dropbear_ecdsa

note

  • -i /root/.ssh/id_dropbear_ecdsa,default id_dropbear
  • /root, /tmp/home/root/.ssh

下一步,我们将把这个命令放到启动目录中作为服务执行。参考:

  • http://www.52asus.com/thread-3692-1-1.html
  • Asus Merlin开机启动设置与服务脚本编写

让程序启动时运行还可以采用Docker和Kubernetes来调度执行。

这里的方法也适用于pc平台/树莓派上。

更多参考

  • SSH免密直接登录方法
  • Dropbear SSH, https://matt.ucc.asn.au/dropbear/dropbear.html
  • How To Install New Generation Entware, https://hqt.ro/how-to-install-new-generation-entware/

  • How to Install Debian Stretch - Arm, https://hqt.ro/how-to-install-debian-stretch-arm/

  • How to Install Debian Jessie - Arm, https://hqt.ro/how-to-install-debian-jessie-arm/
  • How can I install Docker in a Debian Chroot?, https://unix.stackexchange.com/questions/496860/how-can-i-install-docker-in-a-debian-chroot

  • Plex Media Server on AsusWRT Arm Routers, https://hqt.ro/plex-media-server-through-debian-arm/

  • 华硕路由器官方固件开机自动运行脚本方法,http://koolshare.cn/thread-105955-1-1.html

  • 如何将内部服务映射到外网可以访问, https://my.oschina.net/u/2306127/blog/3025654

转载于:https://my.oschina.net/u/2306127/blog/3027225

你可能感兴趣的:(在Asus Merlin固件的Dropbear使用及免密登录)