登录 Y 远程用户时使用 X SSH 密钥?

登录 Y 远程用户时使用 X SSH 密钥?

我正在寻找一种在使用特定用户名登录远程主机时设置特定 SSH 密钥的方法。这可以在 SSH 配置文件中实现吗?

例如:

使用密钥“id_rsa-test”作为用户名“testuser”:

ssh testuser@host1
ssh testuser@host2
ssh testuser@host3

对所有其他用户使用密钥“id_rsa”。

ssh root@host1
ssh admin@host2
ssh [email protected]

有没有办法配置这个?

答案1

谢谢@xhienne(评论链接)为您的建议。

将以下内容添加到 ssh_config 似乎已经解决了问题:

Match User testuser
  IdentityFile ~/.ssh/id_rsa-test

该块应放置在上面Host *id_rsa-test提前发送id_rsa给测试用户。

答案2

假设您使用 OpenSSH,您可以~/.ssh/config为每个文件配置文件,那么您也不必指定用户,您可以创建自己的名称:

host host1
    User testuser
    IdentityFile ~/.ssh/id_rsa-test

那么当你这样做时,ssh host1它会自动执行,或者,因为你host1也将作为其他用户使用,所以你可以这样做

host test-host1
    User testuser
    IdentityFile ~/.ssh/id_rsa-test
    Hostname host1

然后做ssh test-host1

您可以对每个您想要的主机执行相同的操作。

任何与 ssh_config(5) 文件中的条目不匹配的主机都将使用默认行为,或者使用全局设置中 ssh_config 中指定的默认值,即不在主机块内

ssh_config 不支持用户名匹配,但您可以编写一个 shell 脚本来为您检测。这是 bash 中的一个脆弱的例子,它假设你的用户名/主机始终是第一个参数,如果不是,就会中断:

ssh() {
    if [[ "$1" =~ ^testuser@ ]]; then
        command ssh -i ~/.ssh/id_rsa-test "$@"
    else
        command ssh "$@"
    fi
}

相关内容