我在同一主机名上有多个 SSH 服务器,并且我想对在一个端口上运行的 ssh 服务器使用默认用户名,对第二个 ssh 服务器使用另一个端口。这可能吗?
答案1
从man sshd
:
-f config_file 指定配置文件的名称。默认为 /etc/ssh/sshd_config。如果没有配置文件,sshd 将拒绝启动。
因此,sshd
使用单独的配置文件调用服务器实例。
答案2
没有很好的解决方案,但可以Match exec
使用ssh_config
.
从man ssh_config
:
exec 关键字在用户的 shell 下执行指定的命令。如果命令返回零退出状态,则条件被视为 true。包含空白字符的命令必须用引号引起来。命令中的以下字符序列将在执行之前展开:“%L”将替换为本地主机名的第一个组成部分,“%l”将替换为本地主机名(包括任何域名), '%h' 将替换为目标主机名,'%n' 将替换为命令行上指定的原始目标主机名,'%p' 为目标端口,'%r' 为远程登录用户名,“%u”为运行 ssh(1) 的用户的用户名。
这意味着我们可以让ssh
execute/usr/bin/test
匹配端口(这里是2222):
Match host "your_host" exec "test 2222 -eq %p"
User another_user
或者,您可以在另一个端口上为 SSH 服务器定义昵称/别名:
Host server_with_other_port
Port 2222
User another_user
ssh server_with_other_port
然后您就可以使用不同的默认端口和默认用户名连接到第二个 SSH 服务器。
别名解决方案的注意事项是,仅当您使用别名时才应用默认用户名,而不是当您使用真实服务器名称或 IP 地址时应用默认用户名。