
Ich lerne Hadoop und versuche, das passwortlose SSH gemäß dem im Buch definierten Verfahren zu erstellen:Hadoop: Der ultimative Leitfaden
SSH konfigurieren
Der pseudoverteilte Modus ist nur ein Sonderfall des vollständig verteilten Modus, bei dem der (einzelne) Host der lokale Host ist. Daher müssen wir sicherstellen, dass wir per SSH eine Verbindung zum lokalen Host herstellen und uns anmelden können, ohne ein Kennwort eingeben zu müssen.
Stellen Sie zunächst sicher, dass SSH installiert ist und ein Server läuft(Ich bin mir nicht sicher, was sie damit meinen). Unter Ubuntu wird dies beispielsweise mit folgendem erreicht:
sudo apt-get install ssh
Um die passwortlose Anmeldung zu aktivieren, generieren Sie dann einen neuen SSH-Schlüssel mit einer leeren Passphrase:
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
Möglicherweise müssen Sie auchssh-hinzufügenwenn Sie ssh-agent.Test ausführen, mit dem Sie eine Verbindung herstellen können:
ssh localhost
Bei Erfolg sollten Sie kein Passwort eingeben müssen.
Alles scheint gut zu funktionieren, aber es wird immer noch nach einem Passwort gefragt. Ich gebe mein Anmeldekennwort ein, das ich auch für den Root-Zugriff verwende. Aber es funktioniert überhaupt nicht. Bitte geben Sie mir einen Vorschlag.
Weitere Informationen hinzufügen. Ich habe den alten Schlüssel gelöscht und einen neuen hinzugefügt.
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
Meine Dateiberechtigungen danach waren
-rw-rw-r-- 1 incredible incredible 403 मई 24 17:16 authorized_keys
-rw------- 1 incredible incredible 1679 मई 23 23:08 id_rsa
-rw-r--r-- 1 incredible incredible 403 मई 23 23:08 id_rsa.pub
-rw-r--r-- 1 incredible incredible 444 मई 24 17:12 known_hosts
nach dem Ändern der Berechtigung von Authorized_key ist es
-rw------- 1 incredible incredible 403 मई 24 17:16 authorized_keys
-rw------- 1 incredible incredible 1679 मई 23 23:08 id_rsa
-rw-r--r-- 1 incredible incredible 403 मई 23 23:08 id_rsa.pub
-rw-r--r-- 1 incredible incredible 444 मई 24 17:12 known_hosts
Aber auch danach werde ich nach dem Passwort gefragt, wenn ichssh localhost
Weitere Info-Ausgabe der ssh -v localhost
Frage von @heemayl hinzufügen
incredible@incredible:~$ ssh -v localhost OpenSSH_6.7p1 Ubuntu-5ubuntu1, OpenSSL 1.0.1f 6 Jan 2014 debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 19: Applying options for * debug1: Connecting to localhost [127.0.0.1] port 22. debug1: Connection established. debug1: identity file /home/incredible/.ssh/id_rsa type 1 debug1: key_load_public: No such file or directory debug1: identity file /home/incredible/.ssh/id_rsa-cert type -1 debug1: key_load_public: No such file or directory debug1: identity file /home/incredible/.ssh/id_dsa type -1 debug1: key_load_public: No such file or directory debug1: identity file /home/incredible/.ssh/id_dsa-cert type -1 debug1: key_load_public: No such file or directory debug1: identity file /home/incredible/.ssh/id_ecdsa type -1 debug1: key_load_public: No such file or directory debug1: identity file /home/incredible/.ssh/id_ecdsa-cert type -1 debug1: key_load_public: No such file or directory debug1: identity file /home/incredible/.ssh/id_ed25519 type -1 debug1: key_load_public: No such file or directory debug1: identity file /home/incredible/.ssh/id_ed25519-cert type -1 debug1: Enabling compatibility mode for protocol 2.0 debug1: Local version string SSH-2.0-OpenSSH_6.7p1 Ubuntu-5ubuntu1 debug1: Remote protocol version 2.0, remote software version OpenSSH_6.7p1 Ubuntu-5ubuntu1 debug1: match: OpenSSH_6.7p1 Ubuntu-5ubuntu1 pat OpenSSH* 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 3c:e1:36:10:30:19:b3:e1:43:73:a5:6c:76:9e:24:67 debug1: Host 'localhost' is known and matches the ECDSA host key. debug1: Found key in /home/incredible/.ssh/known_hosts:1 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,keyboard-interactive debug1: Next authentication method: publickey debug1: Offering RSA public key: /home/incredible/.ssh/id_rsa debug1: Authentications that can continue: publickey,password,keyboard-interactive debug1: Trying private key: /home/incredible/.ssh/id_dsa debug1: Trying private key: /home/incredible/.ssh/id_ecdsa debug1: Trying private key: /home/incredible/.ssh/id_ed25519 debug1: Next authentication method: keyboard-interactive debug1: Authentications that can continue: publickey,password,keyboard-interactive debug1: Next authentication method: password incredible@localhost's password:
@heemayl: Folgendes ist die Ausgabe vonssh -vvv localhost
debug1: Offering RSA public key: /home/incredible/.ssh/id_rsa debug3: send_pubkey_test debug2: we sent a publickey packet, wait for reply debug1: Authentications that can continue: publickey,password,keyboard-interactive debug1: Offering RSA public key: incredible@incredible debug3: send_pubkey_test debug2: we sent a publickey packet, wait for reply debug1: Authentications that can continue: publickey,password,keyboard-interactive debug1: Trying private key: /home/incredible/.ssh/id_dsa debug3: no such identity: /home/incredible/.ssh/id_dsa: No such file or directory debug1: Trying private key: /home/incredible/.ssh/id_ecdsa debug3: no such identity: /home/incredible/.ssh/id_ecdsa: No such file or directory debug1: Trying private key: /home/incredible/.ssh/id_ed25519 debug3: no such identity: /home/incredible/.ssh/id_ed25519: No such file or directory debug2: we did not send a packet, disable method debug3: authmethod_lookup keyboard-interactive debug3: remaining preferred: password debug3: authmethod_is_enabled keyboard-interactive debug1: Next authentication method: keyboard-interactive debug2: userauth_kbdint debug2: we sent a keyboard-interactive packet, wait for reply debug1: Authentications that can continue: publickey,password,keyboard-interactive debug3: userauth_kbdint: disable: no info_req_seen debug2: we did not send a packet, disable method debug3: authmethod_lookup password debug3: remaining preferred: debug3: authmethod_is_enabled password debug1: Next authentication method: password incredible@localhost's password:
Antwort1
Das Problem liegt an der Berechtigung der ~/.ssh/authorized_keys
Datei. Die Berechtigung sollte nicht so beschaffen sein, dass andere in die Datei schreiben können.
Wenn die Berechtigung beispielsweise auf Oktal gesetzt ist (das ist wirklich teuflisch!!), wird die Datei 666
wie alle anderen ignoriert und Sie werden zur Eingabe des Kennworts aufgefordert, wenn Sie über Schreibberechtigung für die Datei verfügen .~/.ssh/authorized_keys
ssh
Vorausgesetzt, die Datei ~/.ssh/authorized_keys
existiert noch nicht, wird der folgende Befehl
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
erstellt die Datei ~/.ssh/authorized_keys
mit der durch Ihren Wert bestimmten Berechtigung umask
und hängt dann den Inhalt der ~/.ssh/id_rsa.pub
Datei an.
Die Lösung besteht darin, die Berechtigung der Datei so zu ändern, dass sie nur von Ihnen beschreibbar ist, zum Beispiel:
chmod 600 ~/.ssh/authorized_keys