我找到了很多帮助,显示如何配置.ssh / config以根据我连接到的主机名选择一个identityFile,但我连接到一个大号主机,使用两个用户名之一。我希望ssh能够识别我选择的用户名,并选择匹配的IdentityFile。
我试过了:
Host admin@*
IdentityFile ~/.ssh/admin_id_rsa
Host chintchary@*
IdentityFile ~/.ssh/chintchary_id_rsa
使用ssh -v我可以看到配置被忽略。
答案 0 :(得分:2)
您在几个方面的语法错误:
:
User
不属于Host
,但可以使用Match
阻止匹配您的配置应如下所示:
Match user admin
IdentityFile ~/.ssh/admin_id_rsa
Match user chintchary
IdentityFile ~/.ssh/chintchary_id_rsa
所有内容均可在ssh_config(5)
的手册页中阅读。然后确保您的文件已被读取。对于你的版本,它应该对错误的语法大喊大叫。
如果你的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 $@
}