GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So führen Sie SSH und SCP ohne Passwort von SSH2 zu OpenSSH durch

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:

  1. OpenSSH zu OpenSSH
  2. OpenSSH zu SSH2
  3. 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:

  1. 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.
  2. 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 .


Linux
  1. Ssh – Der Unterschied zwischen einem Openssh-Schlüssel und einem Putty-Schlüssel?

  2. So führen Sie SSH und SCP im Stapelmodus aus (nur wenn die Anmeldung ohne Passwort aktiviert ist)

  3. Wie kann ich einen „Git-Pull“ durchführen, ohne mein SSH-Passwort erneut einzugeben?

  4. Wie lade ich eine Datei mit SSH vom Server herunter?

  5. So führen Sie SCP vom Linux-Server zum Windows-Client aus

So richten Sie den öffentlichen und privaten SSH-Schlüssel unter Linux ein

Generieren und Verwenden eines SSH-Schlüssels mit PuTTY

Wie generiert und verwendet man einen SSH-Schlüssel in einem Linux-System?

So fügen Sie dem VS-Code einen SSH-Schlüssel hinzu und stellen eine Verbindung zu einem Host her

So kopieren Sie Dateien aus der Ferne über SSH, ohne ein Passwort einzugeben

Führen Sie SSH und SCP ohne Passworteingabe auf openSSH aus