2019独角兽企业重金招聘Python工程师标准>>>
在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