背景:從windows10換到deepin後,在連接公司的服務器遇到了問題:windows下用的是xshell,開啓xagent後,可直接從公司的跳轉板上連接生產服務器;在deepin的深度終端上,從公司的跳板機連接到生產服務器時,提示需要public key。baidu+google幾次之後,終於解決了這個問題。
在深度終端中,實現像xshell下那樣,快速地登錄生產服務器,至少要解決兩個問題:
- 開啓ssh-agent(在xshell下只需勾選xagent即可)
- 免密碼輸入
深度終端中自帶了遠程服務器的管理功能,可惜的是,並不支持ssh-agent功能,因此只能自主實現了。
關於如何開啓ssh-agent方法,主要是使用以下命令:
eval `ssh-agent`
對於如何免密碼輸入,可以使用expect
功能,實現密碼自動輸入。幸運的是,expect
在deepin上已經默認安裝了,不能再去折騰安裝過程了。
我使用的shell腳本如下:
#!/bin/bash
#
# ssh 連接方法,開啓ssh-agent
#
connect() {
#開啓ssh-agent
eval `ssh-agent`
#使用expect實現密碼自動輸入
expect -c "
spawn ssh-add $1
#Enter passphrase for /home/root/.ssh/id_rsa:
expect "*passphrase*"
send -- $3\r
spawn ssh -A fangchengyan@$2 -p $4 -i $1
#Enter passphrase for key '/home/root/.ssh/id_rsa':
expect "*passphrase*"
send -- $3\r
interact
exit
"
exit
}
PASSWORD="password"
SSH_KEY="/home/root/.ssh/id_rsa"
SERVER="192.168.0.1"
PORT=22
#
# 使用時,可根據編號,自主選擇要連接的服務器
#
echo '請選擇:'
echo '1) 跳板機1-192.168.0.1'
echo '2) 跳板機2-192.168.0.2'
read num
case $num in
1)
SERVER="192.168.0.1"
connect ${SSH_KEY} ${SERVER} ${PASSWORD} ${PORT}
;;
2)
SERVER="192.168.0.2"
connect ${SSH_KEY} ${SERVER} ${PASSWORD} ${PORT}
;;
*)
connect ${SSH_KEY} ${SERVER} ${PASSWORD} ${PORT}
;;
esac
exit
以上腳本開啓了ssh-agent功能,並實現了自動密碼輸入功能,代替了xshell中的xagent功能。
最後,想說的是,使用linux是一個折騰的過程,期待deepin快速發展(願深度終端早日支持ssh-agent功能),讓我們這些使用者能少些折騰。