deepin下深度終端使用ssh-agent(xshell中的xagent功能)

背景:從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功能),讓我們這些使用者能少些折騰。
原作者:Funcy1122
原地址://my.oschina.net/funcy/blog/1941167

Tags: