GNU/Linux >> Tutoriels Linux >  >> Linux

Comment effectuer SSH et SCP sans mot de passe de SSH2 à OpenSSH

Dans nos articles précédents, nous avons expliqué comment configurer l'authentification basée sur la clé ssh pour exécuter ssh et scp sans mot de passe sous le trois scénarios suivants :

  1. OpenSSH vers OpenSSH
  2. OpenSSH vers SSH2
  3. SSH2 vers SSH2

Dans cet article, j'expliquerai comment exécuter ssh et scp de SSH2 (hôte local) à OpenSSH (hôte distant) sans mot de passe.

1. Identifier la version SSH de l'hôte local et de l'hôte distant

Dans cet exemple, l'hôte local exécute SSH2 et l'hôte distant exécute OpenSSH.

[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. Générer une paire de clés d'authentification SSH2 sur l'hôte local à l'aide de ssh-keygen2

Sur SSH2, ssh-keygen sera un lien symbolique vers ssh-keygen2, comme indiqué ci-dessous.

[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

La clé publique et la clé privée sont stockées dans le dossier .ssh2 sous votre répertoire personnel. Dans cet exemple, il se trouve sous /home/jsmith/.ssh2.

Vous ne devez partager la clé privée avec personne.

Par défaut ssh-keygen2 génère une paire de clés DSA (Digital Signature Algorithm). Vous pouvez également générer une paire de clés RSA comme indiqué ci-dessous.

[local-host]$ ssh-keygen -t rsa

3. Copiez la clé publique SSH2 de l'hôte local vers l'hôte distant qui exécute OpenSSH

Copiez le fichier local-host:/home/jsmith/.ssh2/id_dsa_2048_a.pub vers remote-host:/home/jsmith/.ssh/id_dsa_1024_a.pub. Effectuez un vi /home/jsmith/.ssh/id_dsa_1024_b.pub sur l'hôte distant et copiez le contenu de la clé publique de l'hôte local.

[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. Sur l'hôte local, créez le fichier ~/.ssh2/identification

Créez le fichier suivant sur l'hôte local.

$ vim ~/.ssh2/identification
IdKey id_dsa_2048_a

5. Sur l'hôte distant, convertissez la clé publique SSH2 en clé publique OpenSSH

Cela doit être exécuté sur l'hôte distant qui exécute OpenSSH. Seul OpenSSH peut convertir les clés dans les deux sens entre les formats OpenSSH et SSH2.

[remote-host]$ ssh-keygen -i -f ~/.ssh/id_dsa_1024_a.pub > \
~/.ssh/id_dsa_1024_a_openssh.pub

Copiez la clé publique OpenSSH convertie du fichier ~/.ssh/id_dsa_1024_a_openssh.pub vers le fichier authorized_keys comme indiqué ci-dessous.

[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. Configurez l'autorisation appropriée sur l'hôte distant pour le répertoire .ssh

Sur l'hôte distant qui exécute openSSH, assurez-vous de configurer l'autorisation suivante. Sans cela, vous aurez toutes sortes de problèmes étranges avec ssh.

$ chmod 755 ~
$ chmod 755 ~/.ssh
$ chmod 644 ~/.ssh/authorized_keys

7. Connectez-vous de l'hôte local à l'hôte distant à l'aide de l'authentification par clé SSH

Effectuez ssh de l'hôte local (SSH2) à l'hôte distant (OpenSSH) comme indiqué ci-dessous pour vérifier si l'authentification basée sur la clé fonctionne correctement.

[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]


Remarque  :Si vous obtenez l'erreur suivante lors de l'exécution de ssh ou scp de l'hôte local à l'hôte distant, veuillez vous référer à Comment résoudre le problème d'échec de la négociation d'algorithme sur SSH, pour résoudre ce problème.

[local-host]$ ssh -l jsmith remote-host
warning: Authentication failed.
Disconnected; key exchange or algorithm negotiation failed
(Algorithm negotiation failed.)


Il existe deux façons d'exécuter ssh et scp sans saisir le mot de passe :

  1. Aucune phrase secrète : Lors de la création de la paire de clés, laissez la phrase de passe vide. Utilisez cette option pour le traitement automatisé par lots. par ex. si vous exécutez une tâche cron pour copier des fichiers entre des machines, cette option est appropriée. Vous pouvez ignorer les étapes suivantes pour cette méthode.
  2. Utiliser la phrase secrète et l'agent SSH :Si vous utilisez ssh et scp de manière interactive à partir de la ligne de commande et que vous ne souhaitez pas utiliser le mot de passe à chaque fois que vous exécutez ssh ou scp, je ne recommande pas l'option précédente (pas de phrase secrète), car vous en avez éliminé une niveau de sécurité dans l'authentification basée sur la clé ssh. Au lieu de cela, utilisez la phrase secrète lors de la création de la paire de clés et utilisez l'agent SSH pour exécuter ssh et scp sans avoir à saisir le mot de passe à chaque fois, comme expliqué dans les étapes ci-dessous.

8. Démarrez l'agent SSH sur l'hôte local

L'agent SSH fonctionnera en arrière-plan pour conserver les clés privées et exécuter ssh et scp sans avoir à saisir plusieurs fois la phrase secrète.

[local-host]$ ssh-agent $SHELL

9. Charger la clé privée dans l'agent SSH sur l'hôte local

[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. Exécutez SSH ou SCP de l'hôte local à l'hôte distant sans entrer le mot de passe

[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]


Si vous avez aimé cet article, merci de le partager sur delicious and Stumble it .


Linux
  1. Connexion SSH au serveur RHEL 7 sans mot de passe

  2. Ssh - La différence entre une clé Openssh et une clé Putty ?

  3. Comment supprimer le mot de passe de votre clé SSL

  4. Comment exécuter SCP sans interruption de l'invite de mot de passe sous Linux

  5. Comment exécuter à distance la commande ssh une commande sudo sans mot de passe

Comment configurer la clé publique et privée SSH sous Linux

Comment générer et utiliser une clé SSH avec PuTTY

Comment générer et utiliser la clé SSH dans le système Linux ?

Comment ajouter une clé SSH au code VS et se connecter à un hôte

Comment copier à distance des fichiers via SSH sans entrer de mot de passe

Effectuer SSH et SCP sans entrer de mot de passe sur openSSH