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
原地址:https://my.oschina.net/funcy/blog/1941167

posted @ 2020-04-28 20:06  南歌先生  阅读(1057)  评论(0编辑  收藏  举报