首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何关闭通过脚本打开的ssh连接

如何关闭通过脚本打开的ssh连接
EN

Stack Overflow用户
提问于 2022-05-09 11:52:04
回答 1查看 321关注 0票数 0

我使用下面的脚本向一堆服务器打开ssh隧道,这些服务器总是在mysql、redis和ssh端口之间变化。我是在公司vpn工作的时候做这件事的,但我以前在办公室工作的时候也遇到过同样的问题。

通常,我启动脚本并使用打开的连接与其他工具(如SequelPro或PhpStorm )连接到use服务器或数据库。理想情况下,它只是运行,直到我不再需要它,然后我将退出jumpserver,连接应该关闭。这是好的,只要我不松开连接,并被赶出jumpserver。

代码语言:javascript
复制
#!/bin/sh

username="my-user"
jumpServer="my.bastionserver.net"
hosts=("my.awsserver1.com" "my.awsserver2.com" "my.awsserver3.com")

destMysqlPort=3306
destSshPort=22
destRedisPort=6379

x=10001
y=10002
z=10003

for i in "${hosts[@]}"; do
  :
  server=$i
  sshTunnel="$sshTunnel -L $x:$server:$destMysqlPort -L $y:$server:$destSshPort -L $y:$server:$destRedisPort"
  echo "Server: $server -- MYSQL: $x -- SSH: $y-- Redis: $z"
  x=$((x + 3))
  y=$((y + 3))
  z=$((z + 3))
done

if [ -z "$sshTunnel" ]
then
  echo "ssh tunnels are empty"
else
  ssh $sshTunnel $username@$jumpServer -i ~/.ssh/aws
fi

产出如下:

代码语言:javascript
复制
$ ./awstunnel.sh
Server: my.awsserver1.com -- MYSQL: 10001 -- SSH: 10002-- Redis: 10003
Server: my.awsserver1.com -- MYSQL: 10004 -- SSH: 10005-- Redis: 10006
Server: my.awsserver1.com -- MYSQL: 10007 -- SSH: 10008-- Redis: 10009
[...]

当我试图通过这个脚本再次连接时,我会得到地址已经在使用的消息:

代码语言:javascript
复制
bind [127.0.0.1]:10002: Address already in use
channel_setup_fwd_listener_tcpip: cannot listen to port: 10002
bind [127.0.0.1]:10005: Address already in use
channel_setup_fwd_listener_tcpip: cannot listen to port: 10005
[...]

如何更改脚本,使我可以立即重新启动它,并且不必等待很长一段时间,直到通过这个隧道的连接真正关闭?

我在Mac上工作,jumpserver是Linux服务器,在那里我不应该更改设置。

EN

回答 1

Stack Overflow用户

发布于 2022-05-10 08:35:01

就像这样,有一点提示:

要获得最后执行的命令的PID,您必须键入:

代码语言:javascript
复制
echo "$!"

因此,您可以做的就是在每个ssh登录命令之后存储PID,例如:

代码语言:javascript
复制
#Store the pid of the last command in a variable named sshPid: 
sshPid=$!

当您完成时,只需用以下方法杀死相应的PID:

代码语言:javascript
复制
kill ${sshPid}

告诉我这对你有用吗?

布吉

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72171547

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档