gpt4 book ai didi

linux - 用于本地(非远程)命令执行的 ssh 隧道

转载 作者:IT王子 更新时间:2023-10-29 01:19:22 27 4
gpt4 key购买 nike

我想创建一个 Linux shell (bash-) 脚本,它创建一个 SSH 隧道,运行一个使用该隧道的本地命令,最后关闭隧道和周围的 SSH 连接。

为了减少解释的难度,请考虑对名为“remoteserver”的主机进行本地 SSH 配置,其中包含没有密码的本地私钥,所以

ssh remoteserver -L 4444:targetserver:5555

将直接打开到远程服务器的连接并创建从本地端口 4444 到目标服务器的隧道。考虑到本地命令是 localclient --port 4444,打开隧道、执行本地命令并在本地客户端应用程序完成后关闭隧道的脚本会是什么样子?

因为应该可以保持其他并行正在进行的 SSH 连接,所以我不想要像 sudo killall ssh 这样的东西。

最佳答案

你可以尝试类似的东西

TIMEOUT=60 # seconds
ssh remoteserver -L 4444:targetserver:5555 sleep $TIMEOUT &
localclient --port 4444

隧道将在 $TIMEOUT 秒后自动关闭。请注意,使用 & 仅对无密码连接有效。否则,您需要使用 SSH 的 -f 标志。

或者,

ssh -N remoteserver -L 4444:targetserver:5555 &
sshpid=$!
localclient --port 4444
kill $sshpid

将在 localclient 执行后终止隧道。请注意,这不适用于 -f 标志,因为该进程会双重 fork 。

关于linux - 用于本地(非远程)命令执行的 ssh 隧道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19469501/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com