OpenSSH 在搜索 ssh 配置文件时不考虑 $HOME

OpenSSH 在搜索 ssh 配置文件时不考虑 $HOME

我正在编写一些集成测试,用于测试服务器之间的 SSH 连接。

目前测试是在人们的笔记本电脑上运行的。为了不打扰用户(运行测试的用户),~/.ssh/config我创建了一个临时目录,其中包含专门./tmp/.ssh/config用于测试的定制文件。然后我导出HOME=/path/to/tmp。不幸的是,我发现 openssh 不用于$HOME搜索 ssh 配置或身份文件。

如果我直接通过 ssh 连接到主机,这是可以的,因为我可以使用该-F标志显式设置我的配置。但是,如果我通过堡垒进行 ssh 连接并且有一个 proxycommand,ssh则不会将该配置文件传递给我的 proxycommand。因此,如果我的定制 ssh 配置使用不同的默认用户名(例如),则该配置将不会用于 proxy 命令。

我也“可以”修改 proxycommand (以 ssh 配置文件作为参数),但是,我想知道是否可以让 openssh 通过使用在不同位置查找配置/身份文件环境变量(无需将配置文件传递给每个后续下游命令)。我可以使用更改我的 ssh-agent SSH_AUTH_SOCK,因此我希望也能够更改配置文件目录。

答案1

根据源码,ssh从密码文件中获取主目录,如果不成功,则从HOME环境变量中获取。

Include您可以做的就是向每个用户添加~/.ssh/config,例如~/tmp/user/.ssh/config

如果要包含的文件不存在,ssh不会抱怨。但如果它存在并且可读,它将包含它。这应该允许您进行测试而不会过多地弄乱他们的文件。

请注意,它会带来安全风险。如果您没有很好地保护这些路径,任何知道这些路径的人都可以为其他用户注入本地配置。

相关内容