你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
参数将显示正在使用的键。现在您应该看到只使用了一个。查找“将尝试键:”行。