Mein Problem ist also, dass ich von meinem Client (Windows 7 über PuTTY) keine Verbindung zu meinem SSH-Server (läuft unter Linux Mint Sarah) herstellen kann. Funktioniert nur über die lokale IP.
Sowohl Server als auch Client befinden sich im selben Subnetz. Der SSH-Server ist so eingerichtet, dass nur SSH-RSA-Schlüsselverbindungen ohne Kennwörter zulässig sind. Ich habe einen Schlüssel installiert und dieser funktioniert wie gewünscht, wenn ich mich mit der lokalen IP des Servers verbinde.
Ich habe Port 22 in der Firewall meines WAN-Geräts geöffnet und kann bestätigen, dass es eine Verbindung zum richtigen Feld herstellt, wenn ich die öffentliche IP versuche, da das Ein-/Ausschalten der Firewall des Servers Ablehnungen verursacht. Die SSH-Verbindung erreicht den Server also erfolgreich und versucht, sich mit dem privaten Schlüssel zu authentifizieren, schlägt jedoch mit folgendem Fehler fehl:
Server refused our key
Klingt offensichtlich, aber ich verstehe nicht, warum die Authentifizierung des Schlüssels fehlschlägt, wenn ich mit demselben Schlüssel lokal erfolgreich bin. Dieses Problem war schwer zu untersuchen, da die meisten Ergebnisse auf falsche Portweiterleitungen zurückzuführen sind.
Das habe ich versucht (nachDasLeitfaden, unter anderem):
- Alle Pakete auf dem Server aktualisiert und
apt-get install openssh-server
. - Ich
/etc/ssh/sshd_config
habe Folgendes eingestellt:Port 22
AllowUsers user
PasswordAuthentication no
UsePAM no
- In PuTTYgen wird ein öffentlicher und ein privater Schlüssel erstellt, der in einem Verzeichnis (unter Windows) gespeichert wird.
- Kopiert in
/home/user/.ssh/authorized_keys
den Teil des öffentlichen Schlüssels, der mit beginntssh-rsa
und mit endet,== comment
in eine einzelne Zeile mit einem Wagenrücklauf am Ende. chmod 700 ~/.ssh
die unter aufgeführtls -al
istdrwx------
chmod 644 ~/.ssh/authorized_keys
die unter aufgeführtls -l
ist-rw-r--r--
- Legen Sie in PuTTY unter SSH > Auth „Privater Schlüssel zur Authentifizierung“ auf den zuvor generierten privaten Schlüssel fest.
- Verbindung zu Port 22 herstellen als
user@<local_ip>
... erfolgreich. user@<public_ip>
Stellen Sie als ... eine Verbindung zu Port 22 herServer refused our key
.
Als Bonus gibt tail
ing /var/log/auth.log
mir nichts, wenn der Schlüssel abgelehnt wird. Bei einer lokalen Verbindung wird eine Accepted publickey
Zeile gedruckt.
Und schließlich, und ich bin nicht sicher, ob das relevant ist, erhalte ich beim Versuch, mit FileZilla über SFTP eine Verbindung auf der öffentlichen IP-Adresse herzustellen, diesen Fehler:
Error: The first key-exchange algorithm supported by the server is diffie-hellman-group1-sha1, which is no longer secure. Aborting connection.
Error: Could not connect to server
Zu sagen, dass ich ein fortgeschrittener Linux-Benutzer bin, wäre übertrieben, also übersehe ich vielleicht etwas. Ich hoffe, ich habe mein Problem klar ausgedrückt. Ich bin für jede Hilfe dankbar!
Bearbeiten: Ausgabe von PuTTYs SSH-Paketen und Rohdaten (größtenteils Müll, also eingeschlossen, was ich für menschenlesbar hielt):
Event Log: Looking up host "<omitted>"
Event Log: Connecting to <omitted> port 22
Event Log: We claim version: SSH-2.0-PuTTY_Release_0.67
Event Log: Server version: SSH-2.0-dropbear_0.46
Event Log: We believe remote version has SSH-2 channel request bug
Event Log: Using SSH protocol version 2
Event Log: Using Diffie-Hellman with standard group "group1"
Event Log: Doing Diffie-Hellman key exchange with hash SHA-1
Event Log: Host key fingerprint is:
Event Log: ssh-rsa 1040 <omitted>
Outgoing packet #0x2, type 21 / 0x15 (SSH2_MSG_NEWKEYS)
Event Log: Initialised triple-DES CBC client->server encryption
Event Log: Initialised HMAC-SHA1 client->server MAC algorithm
Incoming packet #0x2, type 21 / 0x15 (SSH2_MSG_NEWKEYS)
Event Log: Initialised triple-DES CBC server->client encryption
Event Log: Initialised HMAC-SHA1 server->client MAC algorithm
Incoming packet #0x4, type 51 / 0x33 (SSH2_MSG_USERAUTH_FAILURE)
00000000 00 00 00 12 70 75 62 6c 69 63 6b 65 79 2c 70 61 ....publickey,pa
00000010 73 73 77 6f 72 64 00 ssword.
Event Log: Server refused our key
Antwort1
Diese Zeile lässt mich vermuten, dass Sie tatsächlich eine Verbindung zu Ihrem Router oder Modem herstellen, wenn Sie eine Verbindung zu Port 22 Ihrer öffentlichen IP herstellen.
Event Log: Server version: SSH-2.0-dropbear_0.46
Wenn Sie sich über die interne IP-Adresse verbinden, erhalten Sie dann dieselbe Serverversionszeile? Wenn nicht, müssen Sie wahrscheinlich SSH auf Ihrem Modem und/oder Router deaktivieren und (falls noch nicht geschehen) eine Portweiterleitung für Port 22 zur internen IP-Adresse Ihres Linux-Servers einrichten.
Wenn Sie SSH auf Ihrem Modem/Router nicht deaktivieren können, können Sie versuchen, einen anderen Port (z. B. 2222) an Port 22 auf Ihrem Linux-Server weiterzuleiten.