2014-04-29 25 views
1

我有许多服务器的列表。如果手上的私钥仍然可以用于使用SSH登录,则需要检查(实际上是对其进行一些操作)。如何快速检查私钥rsa密钥是否仍然适用于bash中的一群服务器?

如果我使用ssh -i /path/to/private_key [email protected]_host。它只会挂在那里要求输入密码:[email protected]_host's password:

如果私钥不适用于此服务器,可以采取什么措施避免此类挂起并收集信息?

+0

可能重复的[自动输入密码的ssh脚本](http://stackoverflow.com/questions/12202587/ssh-script-that-automatically-enters-password) – jww

+0

不行,我没有密码,我拥有的只是一个私人RSA密钥。在这种情况下,不需要使用期望来自动化“类型”密码。 – Zhenkai

+0

你可能想要添加这个问题。正如它的措辞,它听起来像程序挂起等待密码,并且您有兴趣输入密码以避免挂起。 – jww

回答

2

你可以告诉SSH使用密码身份验证不允许:

ssh -i /path/to/private_key -oPasswordAuthentication=no [email protected]_host 

这将导致ssh来立即退出,如果私钥不起作用。

如果你想它只是退出,如果它是成功的也是,只是添加命令到最后:

ssh -i /path/to/private_key -oPasswordAuthentication=no [email protected]_host exit 
1

我不能让PasswordAuthentication=no选项与Mac OS/X 10.9的工作。 2。

但是,我能够得到所需的行为NumberOfPasswordPrompts=0

1

其实我发现另一个更准确的选项可用于解决我的问题。

-oPreferredAuthentications="publickey"

添加后该选项,ssh连接将仅使用身份验证与我提供的,而不是尝试其他方法第一(就像我接受了答案排除了密码)的私钥。这甚至加快了整个过程。