因此,我管理着一堆机器,我为每台机器都设置了别名以便于访问。
对于 ssh 客户端配置中的每个人来说,这看起来像这样:
Host MACHINE-1075 M1075 m1075 1075
User service
HostName 10.0.100.75
Run Code Online (Sandbox Code Playgroud)
并且:
Match User service
IdentityFile ~/.ssh/service_user
Run Code Online (Sandbox Code Playgroud)
这使我只需键入即可ssh 1075自动使用正确的身份文件和用户进入该机器。
这对于正常访问来说效果很好。然而,有时我可能需要以 root 身份登录来执行某些任务。我可以通过显式指定身份文件来完成此操作,例如ssh root@1075 -i ~/.ssh/root_user.
这没问题,但我真正想做的是配置 SSH 以从用户和主机的组合中找出所需的身份文件,从而允许我键入ssh root@1075并执行正确的操作。我知道我可以匹配 root 用户的所有使用并将其链接到一个身份文件:
Match User root
IdentityFile ~/.ssh/root_user
Run Code Online (Sandbox Code Playgroud)
然而,这不适用于我的情况,因为有几组机器可能需要不同的根访问凭据,因此并非所有机器都应该匹配。理想情况下,我想做的是:
Match Host 10.0.100.75 && Match User root
IdentityFile ~/.ssh/root_user
Run Code Online (Sandbox Code Playgroud)
但这似乎不起作用。作为临时解决方案,我只是简单地为机器添加别名root-作为前缀,这样我就可以这样做ssh root-1075,这还不错,但它并不完全是我想要的。
这是在运行 OpenSSH 8.4 的 Ubuntu 21.10 上进行的。