2016-06-24 15 views
1

Ich habe zwei Server mit SSH-Schlüsselaustausch verbunden. Jetzt kann ich mich auf dem Remote-Server ohne Passwort einloggen.SSH-Konnektivität mit SSH-Schlüsseln validieren

Jetzt möchte ich überprüfen, ob die Verbindung wirklich ohne Passwort funktioniert. Wie kann ich das tun?

Ich versuchte folgenden Ansatz, wo SSH sollte nach 10 Sekunden Timeout, ich werde seinen Return-Code erfassen. aber das tut es nie. Sobald es Timeout ist. Es bleibt bei der Passwortabfrage.

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 

Case-I

Wenn jedoch SSH-Schlüssel nicht arbeitet dann und es nie Time-out und bleiben auf Passwortabfrage. Daher kann der Rückgabecode nicht erfasst werden.

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

Fall-II

Wenn ich die IP-Adresse zur Verfügung stellen, die nicht pingable wird dann dieses approch funktioniert.

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

Benötigen Sie bei der Bestimmung helfen, ob SSH-Verbindung kennwort weniger weit oder nicht.

+0

Ich rate Ihnen, 'ssh -v' zu tun. Dadurch erhalten Sie eine Debug-Ablaufverfolgung darüber, welche Art von Authentifizierung ssh verwendet (insbesondere wenn der öffentliche Schlüssel auf Ihrem Host vorhanden ist). – oliv

+0

@Cyrus, Gleiches Ergebnis..Kommando wird nie beendet. –

Antwort

1

Sie können die Kennwortauthentifizierung mithilfe von PasswordAuthentication=no deaktivieren. Es schlägt sofort fehl, wenn die Pubkey-Authentifizierung fehlschlägt.

Edit: Mit BatchMode sollte sicherlich funktionieren.

+0

genial, so wird die Kombination von PasswordAuthentication und ConnectTimeout benötigt !! –

+0

'ConnectionTimeout' wird nicht benötigt, aber es wäre hilfreich, wenn der Server nicht erreichbar ist. – Jakuje

+0

Entschuldigung, derselbe Befehl funktioniert nicht, es wird nach dem Passwort gefragt –