![我可以根据使用的端口有不同的 ssh 默认值吗?](https://linux22.com/image/120787/%E6%88%91%E5%8F%AF%E4%BB%A5%E6%A0%B9%E6%8D%AE%E4%BD%BF%E7%94%A8%E7%9A%84%E7%AB%AF%E5%8F%A3%E6%9C%89%E4%B8%8D%E5%90%8C%E7%9A%84%20ssh%20%E9%BB%98%E8%AE%A4%E5%80%BC%E5%90%97%EF%BC%9F.png)
我在同一主机名上有多个 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 地址时应用默认用户名。