如何强制 ssh 使用特定的私钥?

如何强制 ssh 使用特定的私钥?

ssh -i <private key filename>可以指示 ssh 使用额外的私钥来尝试身份验证。

文档没有明确说明如何明确使用该键。

答案1

您可以使用 IdentitiesOnly 选项:

ssh -o "IdentitiesOnly=yes" -i <private key filename> <hostname>

来自 ssh_config(5) 的手册页:

  IdentitiesOnly
         Specifies that ssh(1) should only use the configured authentication identity and certificate files (either the default files, or those explicitly config‐
         ured in the ssh_config files or passed on the ssh(1) command-line), even if ssh-agent(1) or a PKCS11Provider or SecurityKeyProvider offers more identi‐
         ties.  The argument to this keyword must be yes or no (the default).  This option is intended for situations where ssh-agent offers many different identi‐
         ties.

答案2

另一种方法是使用

ssh-keygen

并为指定的主机和对应的私钥创建特殊的配置

编辑 ~/.ssh/config

Host handy_server
    HostName x.y.z.w
    IdentityFile ~/.ssh/handy
    IdentitiesOnly yes
    User userk
    Port 22

答案3

接受的答案是错误的,因为除了使用参数指定的文件之外,默认配置中的所有身份文件也将被使用-i。如果您连接的设备有身份验证尝试限制,并且在最终获得正确密钥之前可以超过该限制,那么这可能会成为一个问题。

为了强制它使用单个私钥文件,并且只使用那个密钥,您可以使用以下参数指定不存在的配置文件-F

ssh -F /dev/null -o IdentitiesOnly=yes -i <private key filename> <hostname>

使用-v参数将显示正在使用的键。现在您应该看到只使用了一个。查找“将尝试键:”行。

相关内容