2016-06-24 199 views
1

我使用SSH密鑰交換連接了兩臺服務器。現在我可以無需密碼登錄到遠程服務器。使用SSH密鑰驗證SSH連接

現在,我想驗證連接是否真的無密碼工作。我該怎麼做?

我嘗試了以下方法,其中SSH應在10秒後超時,我將捕獲它的返回碼。但它從來沒有。一旦超時。它仍然在密碼提示符上。

ssh -o ServerAliveInterval=10 -o ConnectTimeout=15 [email protected] exit 

if [ "$?" -ne 0 ];then 
    echo "SSH keys no more working,you need to initiate keys exchange again!!" 
    exit 1; 
fi 

案例我

然而,當SSH密鑰不能再工作,它從來沒有超時和留在密碼提示。所以無法捕獲返回碼。

ssh -o ServerAliveInterval=10 -o ConnectTimeout=15 [email protected] exit 
Enter Windows password: 

情況下-II

當我提供未再ping到這個計算策略的作品IP地址。

ssh -o ServerAliveInterval=10 -o ConnectTimeout=15 [email protected] exit 
ssh: connect to host ip1.ip1.ip1.ip1 port 22: Connection timed out 

需要幫助確定SSH連接是否無密碼工作與否。

+0

我建議你做'ssh -v'。這將給你一些關於什麼類型的身份驗證使用ssh的調試跟蹤(特別是如果您的主機上的公鑰存在)。 – oliv

+0

@Cyrus,相同的結果..命令不會退出。 –

回答

1

您可以使用PasswordAuthentication=no禁用密碼驗證。當pubkey身份驗證失敗時,它將立即失敗。

ssh -o BatchMode=yes -o ConnectTimeout=15 [email protected] exit 

編輯:使用BatchMode應該肯定有效。

+0

真棒,所以需要組合PasswordAuthentication和ConnectTimeout! –

+0

'ConnectionTimeout'不是必需的,但如果服務器不可達,它會很有幫助。 – Jakuje

+0

對不起,同樣的命令不起作用,它要求輸入密碼 –