情况是这样的
我有一台名为 MY_COMPUTER
的计算机,一台名为 REMOTE_VM
的计算机,我有一个用户 remoteuser
在 /etc 中/passwd
shell /bin/false
这个用户只有一个功能,在反向 SSH 之后做一个 SSH 隧道。
我目前使用的命令是
ssh \
-nNT \
-R 42242:127.0.0.1:22 \
remoteuser@REMOTE_VM
我希望这个命令在脚本中执行,并有办法获得回调或某种方式(比如将这个 ssh 命令放在后台并定期检查套接字文件的存在或类似的东西) 以检查连接是否已实际打开,而不仅仅是在网络速度较慢的情况下挂起连接。
openssh-client 是否有这样的方法,或者您必须使用 ssh 客户端的自定义实现,以便您可以将回调放在任何您想要的地方?
我更喜欢使用普通 openssh-client 和 bash 的(甚至是肮脏的)解决方案。
最佳答案
详细运行命令,捕获输出,然后测试输出是否表明 session 已建立?沿着:
TMPFILE=$(mktemp)
2>"$TMPFILE" ssh -v -nNT -R 42242:127.0.0.1:22 remoteuser@REMOTE_VM &
grep 'debug1: Entering interactive session.' "$TMPFILE"
或者,也许您可以轮询 netstat
的输出。
关于linux - Bash - 了解 SSH 隧道是否已正确创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41250907/