In unseren vorherigen Artikeln haben wir besprochen, wie man eine ssh-Schlüssel-basierte Authentifizierung einrichtet, um ssh und scp ohne Passwort unter der folgenden drei Szenarien:
- OpenSSH zu OpenSSH
- OpenSSH zu SSH2
- SSH2 zu SSH2
In diesem Artikel erkläre ich, wie man ssh und scp von SSH2 (lokaler Host) zu OpenSSH (Remote-Host) ohne Passwort durchführt.
1. Identifizieren Sie die SSH-Version des lokalen Hosts und des Remote-Hosts
In diesem Beispiel führt der lokale Host SSH2 und der entfernte Host OpenSSH aus.
[local-host]$ ssh -V ssh: SSH Secure Shell 3.2.9.1 (non-commercial version) on i686-pc-linux-gnu [remote-host]$ ssh -V OpenSSH_4.3p2, OpenSSL 0.9.8b 04 May 2006
2. Generieren Sie ein SSH2-Authentifizierungsschlüsselpaar auf dem lokalen Host mit ssh-keygen2
Auf SSH2 ist ssh-keygen ein Softlink zu ssh-keygen2, wie unten gezeigt.
[local-host]$ ls -l /usr/local/bin/ssh-keygen lrwxrwxrwx 1 root root 11 Jul 31 2006 /usr/local/bin/ssh-keygen -> ssh-keygen2 [local-host]$ ssh-keygen Generating 2048-bit dsa key pair 7 o.oOo..oOo.o Key generated. 2048-bit dsa, jsmith@local-host, Sun Oct 19 2008 14:49:42 -0700 Passphrase : [Enter the password here] Again : Private key saved to /home/jsmith/.ssh2/id_dsa_2048_a Public key saved to /home/jsmith/.ssh2/id_dsa_2048_a.pub
Der öffentliche Schlüssel und der private Schlüssel werden im Ordner .ssh2 in Ihrem Home-Verzeichnis gespeichert. In diesem Beispiel befindet es sich unter /home/jsmith/.ssh2.
Sie sollten den privaten Schlüssel mit niemandem teilen.
Standardmäßig ssh-keygen2 generiert ein DSA-Schlüsselpaar (Digital Signature Algorithm). Sie können auch ein RSA-Schlüsselpaar wie unten gezeigt generieren.
[local-host]$ ssh-keygen -t rsa
3. Kopieren Sie den öffentlichen SSH2-Schlüssel vom lokalen Host auf den Remote-Host, auf dem OpenSSH ausgeführt wird
Kopieren Sie die Datei local-host:/home/jsmith/.ssh2/id_dsa_2048_a.pub nach remote-host:/home/jsmith/.ssh/id_dsa_1024_a.pub. Führen Sie ein vi /home/jsmith/.ssh/id_dsa_1024_b.pub auf dem entfernten Host aus und kopieren Sie den Inhalt des öffentlichen Schlüssels vom lokalen Host.
[remote-host]$ vi /home/jsmith/.ssh/id_dsa_1024_a.pub ---- BEGIN SSH2 PUBLIC KEY ---- Subject: jsmith Comment: "2048-bit dsa, jsmith@local-host Sun Oct 19 2008 14:49:42 -070\0" 7ZTVd7H63VyVqBIqfmEBALVa6VKtALZkydlOiPasikEQfujH07tjW+OffaRufFDG0VQESj 5iGSvMtmBBj8wQxGlvJ/dayVqBvvHzMao8bwGC+HFUtH1un7uyIEwOqU1fNzEpghC97mIx tIxJA7ZTVd7H63VIqmzlLbp/ZCd6bcJLvZEepMz96nlNB4NJ5UYIfdgXNhf/TrJD8COWQs t6jsP6RG/WrpHi5iGSvMtmBBj8wQGHddexkRnf/o5YMFJZRo4Iwc7+bgYrIyywBZnfLL7T RTk9TBfWzgJHy/y1tTtCMvVooWvFZbG5AiV3de63MxBaD0o68SASyXZzVM+MabXhjcdXFY 2vjq2vJxOzunEAAAAVAOTeOzDCnj3K5iGSvMtmBBj8wQGHAAABAA38sGpHEfSxLx5MjQci dko1pKuV1W9rOK3y19A2J2N6rSdWYb7Zyzw8Gr7kTMWX1TP5WhRGCUhNRYnjI+4wgZIZdC lfGdp8MGI3HBg9CAr702BOzRTMnW0aqsGjrbhcwhWaDgRymhBh++nGAhHxeWn4ApJ8F6kT 8HaAm3dFYXpHCaZ/xuKPXr4DFugGl8MRDU8TwioNE9kRi0Ko/kB5LTHuGhMPHGshMJeVGi PQTrt9NAzgYyJeT9RB9VZadgElMvQ9S0+fo6ipOA== ---- END SSH2 PUBLIC KEY ----
4. Erstellen Sie auf local-host die Datei ~/.ssh2/identification
Erstellen Sie die folgende Datei auf dem lokalen Host.
$ vim ~/.ssh2/identification IdKey id_dsa_2048_a
5. Konvertieren Sie auf dem Remote-Host den öffentlichen SSH2-Schlüssel in den öffentlichen OpenSSH-Schlüssel
Dies sollte auf dem Remote-Host ausgeführt werden, auf dem OpenSSH ausgeführt wird. Nur OpenSSH kann Schlüssel zwischen OpenSSH- und SSH2-Format hin und her konvertieren.
[remote-host]$ ssh-keygen -i -f ~/.ssh/id_dsa_1024_a.pub > \ ~/.ssh/id_dsa_1024_a_openssh.pub
Kopieren Sie den konvertierten öffentlichen OpenSSH-Schlüssel aus der Datei ~/.ssh/id_dsa_1024_a_openssh.pub in die Datei „authorized_keys“, wie unten gezeigt.
[remote-host]$ vi ~/.ssh/authorized_keys ssh-dss 5iGSvMtmBBj8wQdegAEBALVa6VKtALZkydlOiPasikEQfujH07tjW+OffaRufFD G0VQESjq+YlVTWcXxStz0xGlvJ/dayVqBvvHzMao8bwGC+HFUtH1un7uyIEwOqU1fNzEpgh C97s143S8zBcTAGtdegte3IqmlLbp/ZCd6bcJLvZEepMz96nlNB4NJ5UYIfdgXNhf/TrJD8 COWQst6jsP6RG/WrpHiI4QVDM6tZVZ4CnGjm1QPkRnf/o5YMFJZRo4Iwc7+bgYrIyywBZnf LL7TRTk9TBfWzgJHy/y1tTtCMvVooWvFZbG5AiV3de63MxBaD0o68SASyXZzVM+MabXhjcd XFY2vjq2vJxOzunEAAAAVAOTeOzDCnj3K5iGSvMtmBBj8wQGHAAABAA38sGpHEfSxLx5MjQ dFYXpHCaZ/xuKPXr4DFugGl8MRDU8TwioNE9kRi0Ko/kB5LTHuGhMPHGshMJeVGiPQTrt9N AzgYyJeT9RB9VZadgElMvQ9S0+fo6ipOA==
6. Richten Sie die richtige Berechtigung auf dem Remote-Host für das .ssh-Verzeichnis ein
Stellen Sie auf dem Remote-Host, auf dem openSSH ausgeführt wird, sicher, dass Sie die folgende Berechtigung einrichten. Ohne dies werden Sie alle möglichen seltsamen Probleme mit ssh haben.
$ chmod 755 ~ $ chmod 755 ~/.ssh $ chmod 644 ~/.ssh/authorized_keys
7. Melden Sie sich mithilfe der SSH-Schlüsselauthentifizierung vom lokalen Host zum Remote-Host an
Führen Sie ssh vom lokalen Host (SSH2) zum Remote-Host (OpenSSH) wie unten gezeigt aus, um zu überprüfen, ob die schlüsselbasierte Authentifizierung ordnungsgemäß funktioniert.
[local-host]$ [You are on local-host here] [local-host]$ ssh -l jsmith remote-host Host key not found from database. Key fingerprint: bitaz-navun-gogus-mptop-ljilk-qwlem-ftrtm-llmak-topok-zuiof-bnmix You can get a public key's fingerprint by running % ssh-keygen -F publickey.pub on the keyfile. Are you sure you want to continue connecting (yes/no)? yes Host key saved to /home/jsmith/.ssh2/hostkeys/key_22_remote-host.pub host key for remote-host, accepted by jsmith Sun Oct 19 2008 15:06:42 -0700 Passphrase for key "/home/jsmith/.ssh2/id_dsa_2048_a" with comment "2048-bit dsa, jsmith@local-host, Sun Oct 19 2008 14:49:42 -0700":[Enter password] Last login: Sun Oct 19 14:01:48 2008 from 192.168.1.10 [remote-host]$ [You are on remote-host here]
Hinweis :Wenn Sie beim Durchführen von ssh oder scp vom lokalen Host zum Remote-Host die folgende Fehlermeldung erhalten, lesen Sie bitte den Abschnitt So beheben Sie das Problem „Algorithmus-Aushandlung fehlgeschlagen“ auf SSH, um dieses Problem zu beheben.
[local-host]$ ssh -l jsmith remote-host warning: Authentication failed. Disconnected; key exchange or algorithm negotiation failed (Algorithm negotiation failed.)
Es gibt zwei Möglichkeiten, ssh und scp auszuführen, ohne das Passwort einzugeben:
- Keine Passphrase: Lassen Sie beim Erstellen des Schlüsselpaars die Passphrase leer. Verwenden Sie diese Option für die automatisierte Stapelverarbeitung. für z.B. Wenn Sie einen Cron-Job ausführen, um Dateien zwischen Computern zu kopieren, ist dies eine geeignete Option. Sie können die nächsten Schritte für diese Methode überspringen.
- Passphrase und SSH-Agent verwenden Hinweis:Wenn Sie ssh und scp interaktiv von der Befehlszeile aus verwenden und das Passwort nicht jedes Mal verwenden möchten, wenn Sie ssh oder scp ausführen, empfehle ich die vorherige Option (keine Passphrase) nicht, da Sie eine eliminiert haben Sicherheitsstufe bei der ssh-schlüsselbasierten Authentifizierung. Verwenden Sie stattdessen die Passphrase beim Erstellen des Schlüsselpaars und verwenden Sie den SSH-Agenten, um ssh und scp auszuführen, ohne jedes Mal das Passwort eingeben zu müssen, wie in den folgenden Schritten erläutert.
8. Starten Sie den SSH-Agenten auf local-host
Der SSH-Agent wird im Hintergrund ausgeführt, um die privaten Schlüssel zu speichern und ssh und scp auszuführen, ohne die Passphrase mehrmals eingeben zu müssen.
[local-host]$ ssh-agent $SHELL
9. Laden Sie den privaten Schlüssel in den SSH-Agenten auf dem lokalen Host
[local-host]$ ssh-add Adding identity: /home/jsmith/.ssh2/id_dsa_2048_a.pub Need passphrase for /home/jsmith/.ssh2/id_dsa_2048_a (2048-bit dsa, jsmith@local-host, Sun Oct 19 2008 14:49:42 -0700). Enter passphrase:[Enter your passphrase here]
10. Führen Sie SSH oder SCP vom lokalen Host zum Remote-Home aus, ohne das Passwort einzugeben
[local-host]$ [You are on local-host here] [local-host]$ ssh -l jsmith remote-host Last login: Sun Oct 19 14:20:48 2008 from 192.168.1.10 [remote-host]$ [You are on remote-host here]
Wenn Ihnen dieser Artikel gefallen hat, teilen Sie ihn bitte auf delicious and Stumble it .