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

背景:從windows10換到deepin後,在連接公司的服務器遇到了問題:windows下用的是xshell,開啓xagent後,可直接從公司的跳轉板上連接生產服務器;在deepin的深度終端上,從公司的跳板機連接到生產服務器時,提示需要public key。baidu+google幾次之後,終於解決了這個問題。

在深度終端中,實現像xshell下那樣,快速地登錄生產服務器,至少要解決兩個問題:

  1. 開啓ssh-agent(在xshell下只需勾選xagent即可)
  2. 免密碼輸入

深度終端中自帶了遠程服務器的管理功能,可惜的是,並不支持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功能),讓我們這些使用者能少些折騰。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章