2014-04-29 27 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連接將僅使用身份驗證與我提供的,而不是嘗試其他方法第一(就像我接受了答案排除了密碼)的私鑰。這甚至加快了整個過程。