Vi.*_*Vi. 7 ssh port-forwarding sshd
使用 VPS 在 NAT 后转发端口:
for((;;)) { ssh -R 2222:127.0.0.1:22 vi@vi-server.org; sleep 10; }
Run Code Online (Sandbox Code Playgroud)
当连接以某种方式中断并且正在重新连接时。
Warning: remote port forwarding failed for listen port 2222
Linux vi-server.no-ip.org 2.6.18-92.1.13.el5.028stab059.3 #1 SMP Wed Oct 15 13:33:44 MSD 2008 i686
Run Code Online (Sandbox Code Playgroud)
我输入:
vi@vi-server:~$ killall sshd
Connection to vi-server.org closed by remote host.
Connection to vi-server.org closed.
Linux vi-server.no-ip.org 2.6.18-92.1.13.el5.028stab059.3 #1 SMP Wed Oct 15 13:33:44 MSD 2008 i686
vi@vi-server:~$
Run Code Online (Sandbox Code Playgroud)
现在可以了。
使这个自动化如何更简单?
我想你已经采取了错误的一边:在你的情况,sshd(服务器端)是可能没有失败,也不具有失效的会话,从而杀死它不应该帮你除了大致停止任何已连接的副作用ssh客户端连接。
是ssh客户端在建立端口转发机制失败时不退出连接。而且这种行为不是错误。
您需要查看ExitOnForwardFailuressh手册中的选项..
你的脚本是:
for((;;)) { ssh -R 2222:127.0.0.1:22 vi@vi-server.org -o ExitOnForwardFailure=yes; 睡10;}
此外,您可能希望收紧ServerAliveInterval并ServerAliveCountMax让客户端更快地检测到断开连接。(你应该保证TCPKeepAlive是on这是默认值)。请注意,autossh如果您设置了这些选项,那将不会真正帮助您更多。
看起来AutoSSH是正确的选择。
Autossh 是一个启动 SSH 副本并对其进行监控的程序,如果它死机或停止传递流量,则根据需要重新启动它。最初的想法和机制受到RSTunnel(可靠的SSH隧道)的启发。
在 1.2 版本中,方法发生了变化:autossh 开始使用 SSH 构建一个 SSH 转发循环(一个从本地机器到远程,一个从远程到本地),然后发送它期望返回的测试数据。(这个想法要归功于泰伦斯·马丁。)
在 1.3 版本中,添加了一种新方法(感谢 Ron Yorston):可以为远程回显服务指定一个端口,该服务将回显测试数据。这可以避免拥塞以及确保远程计算机上的所有端口号不冲突的情况。在无法使用回显服务的情况下,循环转发方法仍然可用。
特征
- autossh 是一个启动 ssh 副本并对其进行监控的程序,如果它死机或停止通过流量,则根据需要重新启动它。这个想法来自 rstunnel(可靠的 SSH 隧道),但用 C 实现。
- 作者的观点是,它不像 rstunnel 那样需要繁琐的工作。
- 使用端口转发循环或远程回显服务进行连接监控。
- 当遇到快速故障(例如连接被拒绝)时,会降低连接尝试的速率。
- 在 OpenBSD、Linux、Solaris、Mac OS X、Cygwin 和 AIX 上编译和测试;应该可以在其他 BSD 上工作。
- 免费软件。
| 归档时间: |
|
| 查看次数: |
7405 次 |
| 最近记录: |