我使用dynamicSSH端口转发( -D )和正常的SSH端口转发( -L或-R ) -R很多不同的事情,包括为我的无线networkingstream量添加一层encryption。 我通常使用的命令如下所示:
ssh -l raam -D 9000 my-linux-server.com
启动隧道后,我将Web浏览器configuration为使用端口为9000的127.0.0.1的SOCKS v5代理。现在,浏览器中的所有stream量(DNS除外)都通过SSH隧道传输。
当我准备closures隧道(例如,当我将笔记本电脑带到另一个地方时),我只需键入“ logout ”。 但是,SSH会话挂起,我必须按CTRL + C来获取我的本地提示。
为什么会发生这种情况,我该如何预防呢?
(我的猜测是,我通过隧道打开的连接保持打开状态,我的本地SSH客户端正在等待它们closures,然后再给我提示,如果是这种情况,如何强制所有这些连接closures,米准备注销?)
正如你所期望的那样,这是因为如果有未完成的连接通过隧道,SSH将不会退出。
如果您退出浏览器(以及所有其他正在通过端口9000隧道的程序),则应该退出SSH。
ssh手册页说:
The session terminates when the command or shell on the remote machine exits and all X11 and TCP connections have been closed.
而且我没有看到任何改变这种行为的select,所以我怀疑你没有办法。
你可以背景SSH做:
<enter>~&
如注释中所述,您可以使用-f创build仅隧道连接,但是在使用隧道的所有内容都退出之前,您仍然会遇到连接问题没有终止。 您可以使用〜#选项(转义序列和“磅”)来列出您在注销之前在给定连接上打开的转发连接。