如何让ssh根据我选择的用户使用不同的IdentityFile?

时间:2015-11-24 14:52:19

标签: ssl ssh

我找到了很多帮助,显示如何配置.ssh / config以根据我连接到的主机名选择一个identityFile,但我连接到一个大号主机,使用两个用户名之一。我希望ssh能够识别我选择的用户名,并选择匹配的IdentityFile。

我试过了:

Host admin@*
    IdentityFile ~/.ssh/admin_id_rsa
Host chintchary@*
    IdentityFile ~/.ssh/chintchary_id_rsa

使用ssh -v我可以看到配置被忽略。

1 个答案:

答案 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

如果你的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 $@
}
相关问题