Ich habe zwei Laptops (Host A und Host C) mit dynamischen IP-Adressen und einen Desktop (Host B), auf denen alle (Ubuntu) Linux laufen. Im Moment habe ich alles so eingerichtet, dass ich von Host C aus auf Host A wie folgt zugreifen kann. Ich habe einen SSH-Tunnel von A nach C mit dem Befehl auf HostA in der Form
autossh -NR 10023:localhost:22 [email protected]
Damit der Autossh-Befehl tatsächlich ausgeführt werden kann, verwende ich eine Schlüsselpaarung.
Dann kann ich von C aus per SSH auf B zugreifen und mich dann mit a verbinden mit
ssh -p 10023 localhost
fordert zur Eingabe eines Passworts auf und ich kann mich anmelden. Soweit alles problemlos.
Ich möchte jedoch die Sicherheit auf A verbessern, sodass für die Anmeldung ein Schlüssel erforderlich ist. Ich erstelle also per SSH-Keygen ein Schlüsselpaar auf HostB, nenne meinen Schlüssel customkey_rsa und gebe ihm ein Passwort. Dann ist customkey_rsa.pub der öffentliche Schlüssel. Ich kann ssh-copy-id nicht mit diesem Tunnel zum Laufen bringen, also melde ich mich einfach von C aus bei A an und übertrage customkey_rsa.pub von Host B per SCP. Dann hänge ich den Schlüssel an mit
cd .ssh & cat customkey_rsa.pub >> authorized_keys
Wenn ich mich jetzt jedoch anmelde, erhalte ich immer noch die Aufforderung zur Passworteingabe. Es sieht tatsächlich so aus, als ob es so weit kommt, den Schlüssel auszuprobieren, aber irgendwie in der letzten Sekunde aufgibt, wie unten
von B
ssh -v -i customkey_rsa -p 10023 localhost
gibt
OpenSSH_6.6.1, OpenSSL 1.0.1f 6 Jan 2014
debug1: Connecting to localhost [127.0.0.1] port 10023.
debug1: Connection established.
debug1: identity file customkey_rsa type 1
debug1: identity file customkey_rsa-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.6.1p1 Ubuntu-2ubuntu2
debug1: match: OpenSSH_6.6.1p1 Ubuntu-2ubuntu2 pat OpenSSH_6.6.1* compat 0x04000000
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr [email protected] none
debug1: kex: client->server aes128-ctr [email protected] none
debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ECDSA (redacted)
debug1: Host '[localhost]:10023' is known and matches the ECDSA host key.
debug1: Found key in /home/ohnoplus/.ssh/known_hosts:2
debug1: ssh_ecdsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Offering RSA public key: customkey_rsa
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: password
ohnoplus@localhost's password:
Beachten Sie, dass die Berechtigungen für ~/.ssh
in Host A lauten 700
und für .ssh/authorized_keys
lauten 600
.
Also meine Frage. Warum hat das nicht funktioniert und wie kann ich es beheben?
Dinge, die ich mir angesehen habe und die nicht geholfen haben:
Habe die Vorschlägeliste durchgearbeitet. Bei mir sind die Berechtigungen richtig eingestellt und die anderen Lösungsansätze greifen nicht. Warum erhalte ich bei SSH mit Public-Key-Authentifizierung immer noch eine Kennwortabfrage?
Ähnlich, aber ohne Lösung: SSH mit RSA-Schlüssel fragt nach Passwort
Ich habe keine "authorized_keys2"-Datei ssh fordert trotz .ssh/authorized_keys zur Eingabe eines Passworts auf
Antwort1
Sie müssen hinzufügen:
PasswordAuthentication no
zu Ihrer sshd_config (das ist die Serverkonfiguration)