使用已建立的 SSH 通道这个问题的答案引起了我的兴趣。它表明我可以重用现有的 SSH 连接。然而,经过进一步阅读,我发现这个解决方案可能不适用于我的情况(同时多个隧道)。
我正在使用 OpenSSH_5.9p1 Debian-5ubuntu1.1、OpenSSL 1.0.1 2012 年 3 月 14 日(在 Kubuntu 12.04 上)。
这是我目前在 bash 脚本中所做的事情:
echo "establishing SSH tunnel for SFTP && opening Dolpin with SFTP connection to remote computer..."
ssh -i "$ID_RSA" "$MIDDLEMAN_USER@$MIDDLEMAN_SERVER" -fL $PORT_NUMBER:localhost:$PORT_NUMBER sleep 20; dolphin sftp://HostSftp:$PORT_NUMBER &
echo "establishing SSH tunnel for VNC && connecting to VNC server for remote desktop support..."
sudo ssh -fL 5901:localhost:$VNC_PORT_NUMBER -i "$ID_RSA" "$MIDDLEMAN_USER@$MIDDLEMAN_SERVER" sleep 20; vncviewer localhost:5901
Run Code Online (Sandbox Code Playgroud)
我的担忧(为什么我认为这可能对我不起作用)包括以下内容:
这样做的缺点是 ssh 的某些用途可能无法与您的多路复用连接一起使用。最值得注意的是使用 git、svn 或 rsync 等隧道或转发端口的命令。来源
和这个:
如果您在配置文件中使用 LocalForward 或 RemoteForward,您可能会遇到一个微妙的问题。... SSH1(但不是 OpenSSH)提供了一个解决方案。来源
我正在寻求澄清和说明:
谢谢
使用主连接不会改变您调用 ssh 的方式,与连接共享相关的选项(-S
、-M
、-o ControlXXX
)除外。主连接的所有变化是,当主连接已经建立时,新的从连接将通过该连接,而不是再次进行身份验证。这样就无需提供密码或密钥,并且可以显着加快新连接的建立速度。
多路复用对应用程序没有任何影响。它对防火墙来说是不同的:只有一个连接而不是多个连接。
\n我不知道为什么Symkat声称 \xe2\x80\x9cssh 可能无法与您的多路复用连接一起工作。最值得注意的是使用 git、svn 或 rsync 等隧道或转发端口的命令。\xe2\x80\x9d。如果它在没有多路复用的情况下工作,它也可以在多路复用的情况下工作,因为应用程序无法区分差异。
\nSSH 权威指南不是指连接复用,而是指配置文件\xe2\x80\x9d 中的\xe2\x80\x9cus[ing] LocalForward 或RemoteForward。(那本书是在连接复用存在之前写的。)它说的是,您只能在给定端口上建立一次侦听隧道。这是关于转发,而不是关于复用。
\n要开始使用多路复用,请将以下行添加到您的~/.ssh/config
:
ControlMaster auto\nControlPath ~/.ssh/%l_%h_%p_%r.multiplex\n
Run Code Online (Sandbox Code Playgroud)\n就这样。如果您想建立与主机的连接并保持它直到被显式终止,请运行ssh -N destination &
。当您不再需要该主连接时,请终止该客户端。您仍然需要像以前一样设置隧道。
如果您使用主机作为许多事情的中继,您可能需要设置SOCKS代理。运行ssh -D 1234 destination
并告诉您的 SOCKS 感知应用程序使用位于 的 SOCKS 代理localhost:1234
。当然,这只适用于理解 SOCKS 的应用程序;您可以使用tsocks到大多数非 SOCKS 感知应用程序的网络连接,以通过 SOCKS 代理(tsocks 通过将库调用重定向到包装函数来工作)。
归档时间: |
|
查看次数: |
5627 次 |
最近记录: |