我希望 SSH 忽略共享用户环境中的全局配置文件,在该环境中我无法控制系统范围的配置,因为有些设置与我预期的 SSH 使用相冲突(它设置的默认值与标准默认值不同)
正如所指出的/etc/ssh/ssh_config
Configuration data is parsed as follows:
1. command line options
2. user-specific file
3. system-wide file
我希望它忽略#3的存在。
我知道该-F
标志可用于指定每个用户的配置文件并忽略系统范围的文件。
另一个可能的解决方案是将每个可能的参数覆盖为用户特定文件中的标准默认值。这是不可取的,因为配置可能会随着 ssh 的更新而改变。
理想情况下,会有一个配置指令,例如停止处理选项或忽略全局文件。
有没有更好的方法可以忽略系统范围的文件而不必-F ~/.ssh/config
每次都指定?
答案1
我希望 SSH 忽略全局配置文件
有没有更好的方法可以忽略系统范围的文件而不必
-F ~/.ssh/config
每次都指定?”
使用以下命令alias
:
alias ssh='ssh -F ~/.ssh/config'
答案2
您可以使用-F none
它来简单地避免读取任何配置文件。
如果您想使其成为别名:
alias ssh='ssh -F none'
答案3
如果在特定情况下别名不方便使用,您可以创建以下 shell 脚本:
#!/bin/bash
exec ssh -F ~/.ssh/config "$@"
调用它myssh
或任何你喜欢的名字,使它可执行,然后像 ssh 一样运行它:
myssh user@host ...
答案4
您可以(暂时)从要忽略的全局配置文件中删除读取权限。为命令设置别名ssh
(如其他一些答案中所建议的)不是一个很好的解决方案,因为 ssh config 被除其本身之外的各种命令使用ssh
,例如git
。