hod*_*hle 15 ssh configuration openssh
因此,我管理着一堆机器,我为每台机器都设置了别名以便于访问。
对于 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 上进行的。
ste*_*ver 21
恕我直言,在 中并不完全清楚man ssh_config,但是匹配多个条件的语法似乎是
Match keyword [pattern|pattern-list] keyword [pattern|pattern-list]
Run Code Online (Sandbox Code Playgroud)
其中模式 inpattern-list以逗号分隔,但关键字模式对之间通过简单的空格分隔:
Match Host 10.0.100.75 User root
Run Code Online (Sandbox Code Playgroud)
不支持像这样的显式逻辑运算符&&,因为必须满足所有条件 - 逻辑AND被理解。
| 归档时间: |
|
| 查看次数: |
7097 次 |
| 最近记录: |