在 `~/.ssh/config` 中查找并替换主机名,以便为一组主机运行不同的 shell/`RemoteCommand`?

在 `~/.ssh/config` 中查找并替换主机名,以便为一组主机运行不同的 shell/`RemoteCommand`?

我可以像往常一样通过 ssh 进入多个主机。我有 sudo/su 权限,因此我经常需要在登录服务器时输入该权限。有什么方法可以~/.ssh/config自动完成此操作吗?

我有

Host *.example.com
IdentityFile ~/.ssh/id_rsa_projkey

我希望ssh blah.example.com仍然能正常工作,获得常规 shell。但随后ssh su-blah.example.com登录,然后运行sudo -i(或su),即相当于运行ssh blah.example.com -t sudo -i。我知道我可以添加RemoteCommand到 SSH 配置中。有没有办法在 SSH 配置中对主机名进行“模式匹配”和文本替换?`

答案1

我认为无法在 ssh_config 中对主机名进行替换,但我会尝试添加以点为前导的第二个条目,例如:

Host *.example.com.
  IdentityFile ~/.ssh/id_rsa_projkey
  RemoteCommand sudo -i
  RequestTTY yes

以点开头的 DNS 名称应与不带点的 DNS 条目相同,但 ssh 会将其视为不同的主机名

或者,您可以添加覆盖主机名的条目,但每个主机都需要一个条目。例如:

host su-foo.example.com
  hostname foo.example.com
  IdentityFile ~/.ssh/id_rsa_projkey
  RemoteCommand sudo -i
  RequestTTY yes  

答案2

Ansible或类似的工具可能就是您正在寻找的工具。

相关内容