我必须连接到一个基本服务器,将其称为 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 客户端发现自己不再连接到服务器,则可以选择退出。从很多方面来说,这可能是比监控端口更好的解决方案。