如何阻止 ssh 提供其他密钥?

Way*_*ner 6 ssh key-authentication

我有一些服务器dev.example.com,在其authorized_keys 文件中,我有我的~/.ssh/id_rsa.pub密钥。我也有~/.ssh/my_test.pub钥匙。

~/.ssh/config指定dev.example.com它应该id_rsa像通常想要的那样使用。

但是,我正在尝试进行测试以确保my_test只允许我想要的访问。所以我尝试传入-identity 文件:

$ ssh -v -i /Users/wwerner/.ssh/my_test example
.
.
.
debug1: Offering RSA public key: /Users/wwerner/.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)

它登录。废话。

好的,所以也许这是我使用example而不是 FQDN 的问题:

$ ssh -v -i /Users/wwerner/.ssh/my_test dev.example.com
debug1: Offering RSA public key: /Users/wwerner/.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)

它会登录。也许我需要我的用户名?

$ ssh -v -i /Users/wwerner/.ssh/my_test myusername@dev.example.com
debug1: Offering RSA public key: /Users/wwerner/.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)

好吧...所以现在我撒了我的网更进一步。也许配置文件是导致它的原因:

$ ssh -v -F /dev/null -i /Users/wwerner/.ssh/my_test myusername@dev.example.com
debug1: Reading configuration data /dev/null
debug1: Offering RSA public key: /Users/wwerner/.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)

啊!所以也许如果我也使用 -o ?

$ ssh -v -F /dev/null -o IdentityFile=/dev/null -i /Users/wwerner/.ssh/my_test myusername@dev.example.com
debug1: Offering RSA public key: /Users/wwerner/.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我必须指定什么设置才能使 ssh提供我的id_rsa?

Lam*_*ert 6

您可以将指令IdentitiesOnlyIdentityFile指令结合使用。

在命令行上,您可以使用:

ssh -v -o "IdentitiesOnly=yes" -i /Users/wwerner/.ssh/my_test dev.example.com
Run Code Online (Sandbox Code Playgroud)

作为替代方案,您可以在.ssh/config文件中的主机部分设置指令。

man ssh_config详细信息