通过许多 LocalForward 端口进行 autossh

通过许多 LocalForward 端口进行 autossh

我必须连接到一个基本服务器,将其称为 server1,然后从那里,我可以访问许多其他服务器(host1、host2、...host99。)我的 autossh 可以毫无问题地用于 server1 - 它恢复了我的连接每当我的网络连接丢失时,都会发送到 server1。然而,保持与 server1 的连接并不是我唯一的目标。当我使用这些机器时,我想保持与主机 1、2 等的连接。

我只是用它来访问 server1:

autossh server1

现在,当我尝试 autossh 到 host1 时,我得到:

local autossh[867] <Error>: bind on 127.0.0.1:12346: Address already in use

现在,我的监控端口设置为 12345(在 ~/.bash_profile 中):

export AUTOSSH_PORT=12345

...所以它看起来像本地主机端口 12346接下来尝试但失败了。

我的 ~.ssh/config 有这个转发设置:

Host server1
  User jacob
  HostName server1.mydomain.com
  Port 722
  ForwardAgent yes
  LocalForward 1124 1:22
  RemoteForward 52698 127.0.0.1:52698 #for sublime text / rmate
  IdentityFile ~/.ssh/id_rsa

Host host1
 User jacob
 HostName localhost
 RemoteForward 52698 127.0.0.1:52698
 Port 1124
 ForwardAgent yes
 IdentityFile ~/.ssh/id_rsa

....我已经阅读了有关“地址已在使用”错误的所有内容,并尝试修改我的配置文件,将主机添加到 etc/hosts 文件中,但结果仍然相同。有任何想法吗?

答案1

根据man autossh(手册页),用单个数字指定监控端口,autossh同时使用该端口和端口+1 来实现其监控功能,其中后者称为“回显端口”(用于接收监控响应)。这意味着它将侦听端口+1,从而声明该端口。必须为后续autossh程序提供不同的端口。

或者,您可以使用端口 0,它会关闭连接测试,然后在ssh退出时重新启动。引用手册页:

将监控端口设置为0会关闭监控功能,autossh只会在ssh退出时重新启动ssh。例如,如果您使用的是最新版本的 OpenSSH,您可能希望探索使用 服务器活动间隔服务器最大活动计数如果 SSH 客户端发现自己不再连接到服务器,则可以选择退出。从很多方面来说,这可能是比监控端口更好的解决方案。

相关内容