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

在Asus  Merlin固件中使用的ssh服務器爲Dropbear,包括服務器和dbclient/dropbearkey等客戶端工具,其中dropbearkey對應於OpenSSH的ssh-keygen工具,用於產生密鑰。在Merlin固件中既可使用dbclient,也可使用ssh命令,可是沒有ssh-keygen,可使用dropbearkey替代,不過參數有一些區別。html

爲了在後臺批量執行ssh程序,通常須要免輸入密碼進行登陸。通常有兩種方法,即便用密鑰對加入.ssh/authorized_keys進行受權和使用sshpass在命令行自動輸入密碼(參見:Ubuntu上使用sshpass遠程腳本免密安全交互 )。密鑰對方法在使用OpenSSH和Dropbear有所不一樣,下面具體介紹。docker

OpenSSH

包括使用ssh-keygen生成密鑰對,上傳公鑰到遠程服務器home/user/.ssh/目錄,添加到authorized_keys文件,使用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的客戶端軟件,其詳細使用方法以下:ssh

啓動一個ssh任務的命令以下:工具

ssh -K 60 -fNgR 2200:localhost:22 user@server.remote.org

在未設置密鑰以前,須要交互輸入密碼。this

步驟包括:

爲了連接到 dropbear 服務器,使用 dbclient 以前, 必須經過dropbearkey建立和使用public 和 private keys。以下:spa

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

若是使用rsa,以下:.net

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 supermap@myserver.remote.org:~/.ssh

把公鑰信息複製/粘貼,添加到home/user/.ssh/authorized_keys文件中。

user@openbox01:~/.ssh$ nano authorized_keys

而後,再次執行上面的命令,就再也不提示輸入密碼了。

ssh -y -K 60 -fNgR 2200:localhost:22 user@server.remote.org -i /root/.ssh/id_dropbear_ecdsa

note

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

下一步,咱們將把這個命令放到啓動目錄中做爲服務執行。參考:

讓程序啓動時運行還能夠採用Docker和Kubernetes來調度執行。

這裏的方法也適用於pc平臺/樹莓派上。

更多參考

相關文章
相關標籤/搜索