首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使动态转发的SSH会话存活并随意终止?

如何使动态转发的SSH会话存活并随意终止?
EN

Unix & Linux用户
提问于 2019-02-06 14:10:02
回答 2查看 343关注 0票数 1

我发现有人保持了SSH会话的活动

代码语言:javascript
复制
ssh -f -D $port $SSH_HOST "
    if [ -f ~/.tunnel ]; then
        rm ~/.tunnel;
    fi;
    while [ ! -f ~/.tunnel ]; do
        echo > /dev/null;
    done
" &

并终止SSH会话。

代码语言:javascript
复制
ssh $SSH_HOST "touch ~/.tunnel" 
  1. 使用文件的方式是否与pid文件相同?这种方法可以用于更多的或一般的情况吗?
  2. 我们真的需要使用使用文件的方式来保持SSH会话的活动并终止它吗?有更好的方法吗?

谢谢。

EN

回答 2

Unix & Linux用户

发布于 2019-02-06 14:41:51

Simple改进

该技术允许您切断来自远程计算机的连接。我建议你做些改变

  • 在while循环中添加一个sleep,没有必要在等待时抛出CPU时间
  • 逆转这个过程。在开始时触摸文件并删除它以终止会话。如果需要,这确实为您提供了在文件中包含PID的选项。

Do你需要这个吗?

如果您只想终止会话,我将避免在您的问题中使用以下方法:

代码语言:javascript
复制
SSH -N -D $port $SSH_HOST &

这将设置没有shell的连接作为后台任务(-N禁用shell,&使其成为后台任务)。

您可以使用$!获得(本地) PID,并使用kill将其杀死。

例:

代码语言:javascript
复制
SSH -N -D $port $SSH_HOST &
TUNNEL_PID=$!

# Do some other stuff

kill $TUNNEL_PID
票数 3
EN

Unix & Linux用户

发布于 2019-02-06 15:01:44

除了@PhilipCouling所写的内容外,还有一个奇怪但有效的小实用程序,当交互式终端会话保持打开时,旋转器,很有用。你在远程主机上运行它。它做得不多,但每隔N秒钟就向本地客户端发送一个虚拟数据包(例如,我使用N= 120 )。假人保持了连接的活力。

不知道这是不是你想要的东西,但它就在这里。

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

https://unix.stackexchange.com/questions/499055

复制
相关文章

相似问题

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