如何做其他"东西"在建立SSH隧道的同一终端

时间:2015-12-29 06:11:23

标签: ssh ssh-tunnel

我经常使用ssh隧道。我打开一个终端来创建隧道(例如ssh -L 1111:servera:2222 user@serverb)。然后我打开一个新的终端来完成我的工作。有没有办法在终端建立隧道,并以某种方式把它放在后台,所以我不需要打开一个新的终端?我试过把"&"最后,但这并没有成功。在我输入密码之前,隧道进入了后台。然后我做了fg,输入了密码,我被困在ssh会话中。

我知道一种可能的解决方案是使用screen或tmux或类似的东西。我有一个简单的解决方案吗?

1 个答案:

答案 0 :(得分:2)

完全有-f-N选项:

-f     Requests ssh to go to background just before command execution.  This is useful if
       ssh is going to ask for passwords or passphrases, but the user wants it in the
       background. This implies -n. The recommended way to start X11 programs at a remote
       site is with something like ssh -f host xterm.

       If  the  ExitOnForwardFailure  configuration option is set to ``yes'', then a client 
       started with -f will wait for all remote port forwards to be successfully established
       before placing itself in the background.

-N     Do not execute a remote command.  This is useful for just forwarding ports
       (protocol version 2 only).

所以完整的命令是ssh -fNL 1111:servera:2222 user@serverb

防止ssh询问密码的一种方法也是使用SSH public keys与代理进行身份验证,代理可以保存密码或使用外部图形程序(例如pinentry)提示密码。

查看autossh可能也很有用,如果连接断开,它将自动重新连接SSH。