GNU/Linux >> Tutoriels Linux >  >> Linux

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

Dans cet article, j'expliquerai comment exécuter ssh et scp sans entrer le mot de passe en utilisant l'authentification par clé publique SSH avec l'agent SSH sur openSSH

Il existe deux niveaux de sécurité dans l'authentification basée sur la clé SSH. Pour vous connecter, vous avez besoin à la fois de la clé privée et de la phrase de passe. Même si l'un d'eux est compromis, l'attaquant ne peut toujours pas se connecter à votre compte, car les deux sont nécessaires pour se connecter. C'est bien mieux que l'authentification classique basée sur un mot de passe, où si le mot de passe est compromis, l'attaquant peut accéder au système.

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.
  2. Utilisez 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 avez éliminé un 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.

Les 8 étapes suivantes expliquent comment exécuter SSH et SCP d'un hôte local à un hôte distant sans entrer le mot de passe sur le système openSSH

1. Vérifiez que l'hôte local et l'hôte distant exécutent openSSH

[local-host]$ ssh -V
OpenSSH_4.3p2, OpenSSL 0.9.8b 04 May 2006

[remote-host]$ ssh -V
OpenSSH_4.3p2, OpenSSL 0.9.8b 04 May 2006

2. Générer une paire de clés sur l'hôte local à l'aide de ssh-keygen

[local-host]$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/jsmith/.ssh/id_rsa):<Hit enter>
Enter passphrase (empty for no passphrase): <Enter your passphrase here>
Enter same passphrase again:<Enter your passphrase again>
Your identification has been saved in /home/jsmith/.ssh/id_rsa.
Your public key has been saved in /home/jsmith/.ssh/id_rsa.pub.
The key fingerprint is:
31:3a:5d:dc:bc:81:81:71:be:31:2b:11:b8:e8:39:a0 jsmith@local-host

La clé publique et la clé privée sont généralement stockées dans le dossier .ssh sous votre répertoire personnel. Dans cet exemple, il se trouve sous /home/jsmith/.sshd. Vous ne devez partager la clé privée avec personne.

Par défaut, le ssh-keygen sur openSSH génère une paire de clés RSA. Vous pouvez également générer une paire de clés DSA en utilisant :ssh-keygen -t dsa commande.

3. Installez la clé publique sur l'hôte distant.

Copiez le contenu de la clé publique de l'hôte local et collez-le dans /home/jsmith/.ssh/authorized_keys sur l'hôte distant. Si le /home/jsmith/.ssh/authorized_keys a déjà une autre clé publique, vous pouvez l'ajouter à la fin. Si le répertoire .ssh sous votre répertoire personnel sur l'hôte distant n'existe pas, veuillez le créer.

[remote-host]$ vi ~/.ssh/authorized_keys 
ssh-rsa ABIwAAAQEAzRPh9rWfjZ1+7Q369zsBEa7wS1RxzWR jsmith@local-host

En termes simples, copiez local-host:/home/jsmith/.ssh/id_rsa.pub vers remote-host:/home/jsmith/.ssh/authorized_keys

4. Accordez les autorisations appropriées au répertoire .ssh sur l'hôte distant.

[remote-host]$ chmod 755 ~/.ssh
[remote-host]$ chmod 644 ~/.ssh/authorized_keys

5. Connectez-vous de l'hôte local à l'hôte distant en utilisant l'authentification par clé SSH pour vérifier si cela fonctionne correctement.

[local-host]$ <You are on local-host here>

[local-host]$ ssh -l jsmith remote-host
Enter passphrase for key '/home/jsmith/.ssh/id_rsa': <Enter your passphrase here>
Last login: Sat Jun 07 2008 23:03:04 -0700 from 192.168.1.102
No mail. [remote-host]$ <You are on remote-host here>

6. Démarrez l'agent SSH sur l'hôte local pour exécuter ssh et scp sans avoir à saisir plusieurs fois la phrase secrète.

Vérifiez si l'agent SSH est déjà en cours d'exécution, sinon démarrez-le comme indiqué ci-dessous.

[local-host]$ ps -ef | grep ssh-agent
511 9789 9425 0 00:05 pts/1 00:00:00 grep ssh-agent

[local-host]$ ssh-agent $SHELL

[local-host]$ ps -ef | grep ssh-agent
511 9791 9790 0 00:05 ? 00:00:00 ssh-agent /bin/bash
511 9793 9790 0 00:05 pts/1 00:00:00 grep ssh-agent

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

[local-host]$ ssh-add
Enter passphrase for /home/jsmith/.ssh/id_rsa: <Enter your passphrase here>
Identity added: /home/jsmith/.ssh/id_rsa (/home/jsmith/.ssh/id_rsa)

Voici les différentes options disponibles dans ssh-add :

  • ssh-add  :charge un fichier de clé spécifique.
  • ssh-add -l :répertorie toutes les clés chargées dans l'agent ssh.
  • ssh-add -d  :Supprimer une clé spécifique de l'agent ssh
  • ssh-add -D :Supprimer toutes les clés

8. Effectuez SSH ou SCP vers l'accueil distant à partir de l'hôte local sans entrer le mot de passe.

[local-host]$<You are on local-host here>

[local-host]$ ssh -l jsmith remote-host
Last login: Sat Jun 07 2008 23:03:04 -0700 from 192.168.1.102
No mail. <ssh did not ask for passphrase this time> [remote-host]$ <You are on remote-host here>

Aidez-moi à diffuser l'actualité de The Geek Stuff.

S'il vous plaît laissez vos commentaires et commentaires concernant cet article. Si vous aimez cet article, j'apprécierais vraiment que vous puissiez faire passer le mot sur le blog "The Geek Stuff" en l'ajoutant à del.icio.us ou Digg via le lien ci-dessous.


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

  2. Comment configurer la connexion SSH sans mot de passe

  3. SSH - Générer et travailler avec des clés ssh

  4. Comment convertir un fichier PPK en clés OpenSSH et se connecter en utilisant SSH sous Linux ?

  5. Ssh – Restreindre un utilisateur Ssh/scp/sftp à un répertoire ?

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

Installer et utiliser WinSCP

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

Ssh - Besoin d'un Tty pour exécuter Sudo si je peux Sudo sans mot de passe?

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

Astuces Ubuntu :comment se connecter sans saisir de nom d'utilisateur ni de mot de passe