我找到了很多帮助,展示了如何配置.ssh/config以根据我要连接的主机名选择identityFile,但我使用两个用户名中的一个连接到大量主机。我希望ssh识别我选择的用户名,并选择匹配的IdentityFile。
我试过这个:
Host admin@*
IdentityFile ~/.ssh/admin_id_rsa
Host chintchary@*
IdentityFile ~/.ssh/chintchary_id_rsa
使用ssh-v,我可以看到配置被忽略了。
您在以下几个方面存在语法错误:
- 键和值之间没有冒号
:
User
不是Host
的一部分,但可以使用Match
块进行匹配
你的配置应该是这样的:
Match user admin
IdentityFile ~/.ssh/admin_id_rsa
Match user chintchary
IdentityFile ~/.ssh/chintchary_id_rsa
所有这些都可以从ssh_config(5)
的手册页面上阅读。之后,确保您的文件已被读取。对于您的版本,它应该大声抱怨糟糕的语法。
旧openssh的替代方案
如果您的openSSH版本不支持Match
块,那么您需要使用bash函数进行一些丑陋的破解,比如:
ssh(){
expr match "$@" '.*admin@.*' && I="-i ~/.ssh/admin_id_rsa"
expr match "$@" '.*chintchary@.*' && I="-i ~/.ssh/chintchary_id_rsa"
/usr/bin/ssh $I $@
}