这是情况
我有我的电脑,命名为MY_COMPUTER
一台名为MY_COMPUTER
的机器上,我有一个用户remoteuser
,在/etc/passwd
shell /bin/false
这个用户只有一个function,做一个SSH隧道后能够做一个反向的SSH。
我目前使用的命令是
ssh \ -nNT \ -R 42242:127.0.0.1:22 \ remoteuser@REMOTE_VM
我希望这个命令在脚本中执行,并有一个方法来获得callback或方式(比如把这个ssh命令放在后台,定期检查一个套接字文件或类似的东西)来检查该连接实际上是打开的,而不是在networking缓慢的情况下简单地等待连接。
openssh-client是否有这样的方法,或者你必须使用ssh客户端的自定义实现,以便你可以把你的callback放在任何地方?
我宁愿尽可能多的(甚至肮脏的)解决scheme与纯openssh客户端和bash。
捕获输出,然后测试输出是否表明会话已经建立? 沿着:
TMPFILE=$(mktemp) 2>"$TMPFILE" ssh -v -nNT -R 42242:127.0.0.1:22 remoteuser@REMOTE_VM & grep 'debug1: Entering interactive session.' "$TMPFILE"
或者,也许你可以轮询netstat
的输出。