GNU/Linux >> Tutoriels Linux >  >> Linux

3 étapes pour effectuer une connexion SSH sans mot de passe à l'aide de ssh-keygen et ssh-copy-id

Vous pouvez vous connecter à un serveur Linux distant sans saisir de mot de passe en 3 étapes simples à l'aide de ssky-keygen et ssh-copy -id comme expliqué dans cet article.

ssh-keygen crée les clés publique et privée. ssh-copy-id copie la clé publique de l'hôte local dans le fichier authorized_keys de l'hôte distant. ssh-copy-id attribue également les autorisations appropriées au domicile de l'hôte distant, ~/.ssh et ~/.ssh/authorized_keys.

Cet article explique également 3 inconvénients mineurs liés à l'utilisation de ssh-copy-id et comment utiliser ssh-copy-id avec ssh-agent.

Étape 1 :Créez des clés publiques et privées à l'aide de ssh-key-gen sur l'hôte local

jsmith@local-host$ [Note: You are on local-host here]

jsmith@local-host$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/jsmith/.ssh/id_rsa):[Enter key]
Enter passphrase (empty for no passphrase): [Press enter key]
Enter same passphrase again: [Pess enter key]
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:
33:b3:fe:af:95:95:18:11:31:d5:de:96:2f:f2:35:f9 jsmith@local-host

Étape 2 :Copiez la clé publique sur l'hôte distant à l'aide de ssh-copy-id

jsmith@local-host$ ssh-copy-id -i ~/.ssh/id_rsa.pub remote-host
jsmith@remote-host's password:
Now try logging into the machine, with "ssh 'remote-host'", and check in:

.ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

Remarque : ssh-copy-id ajoute les clés du .ssh/authorized_key de l'hôte distant.

Étape 3 :Connectez-vous à l'hôte distant sans entrer le mot de passe

jsmith@local-host$ ssh remote-host
Last login: Sun Nov 16 17:22:33 2008 from 192.168.1.2
[Note: SSH did not ask for password.]

jsmith@remote-host$ [Note: You are on remote-host here]


Les 3 étapes simples ci-dessus devraient faire le travail dans la plupart des cas.

Nous avons également discuté plus tôt en détail de l'exécution de SSH et SCP d'openSSH à openSSH sans entrer de mot de passe.

Si vous utilisez SSH2, nous avons discuté plus tôt de l'exécution de SSH et SCP sans mot de passe de SSH2 à SSH2, d'OpenSSH à SSH2 et de SSH2 à OpenSSH.

Utilisation de ssh-copy-id avec ssh-add/ssh-agent

Lorsqu'aucune valeur n'est passée pour l'option -i et Si ~/.ssh/identity.pub n'est pas disponible, ssh-copy-id affichera le message d'erreur suivant.

jsmith@local-host$ ssh-copy-id -i remote-host
/usr/bin/ssh-copy-id: ERROR: No identities found


Si vous avez chargé des clés dans ssh-agent en utilisant ssh-add , puis ssh-copy-id obtiendra les clés de ssh-agent à copier sur l'hôte distant. c'est-à-dire qu'il copie les clés fournies par ssh-add -L commande à l'hôte distant, lorsque vous ne transmettez pas l'option -i à ssh-copy-id .

jsmith@local-host$ ssh-agent $SHELL

jsmith@local-host$ ssh-add -L
The agent has no identities.

jsmith@local-host$ ssh-add
Identity added: /home/jsmith/.ssh/id_rsa (/home/jsmith/.ssh/id_rsa)

jsmith@local-host$ ssh-add -L
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAsJIEILxftj8aSxMa3d8t6JvM79DyBV
aHrtPhTYpq7kIEMUNzApnyxsHpH1tQ/Ow== /home/jsmith/.ssh/id_rsa

jsmith@local-host$ ssh-copy-id -i remote-host
jsmith@remote-host's password:
Now try logging into the machine, with "ssh 'remote-host'", and check in:

.ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.
[Note: This has added the key displayed by ssh-add -L]

Trois inconvénients mineurs de ssh-copy-id

Voici quelques désagréments mineurs de ssh-copy-id.

  1. Clé publique par défaut : ssh-copy-id utilise ~/.ssh/identity.pub comme fichier de clé publique par défaut (c'est-à-dire lorsqu'aucune valeur n'est transmise à option -i ). Au lieu de cela, je souhaite qu'il utilise id_dsa.pub, ou id_rsa.pub, ou identity.pub comme clés par défaut. c'est-à-dire que si l'un d'entre eux existe, il doit le copier sur l'hôte distant. Si deux ou trois d'entre eux existent, il doit copier identity.pub par défaut.
  2. L'agent n'a pas d'identité : Lorsque ssh-agent est en cours d'exécution et le ssh-add -L renvoie "L'agent n'a pas d'identité" (c'est-à-dire qu'aucune clé n'est ajoutée à l'agent ssh), ssh-copy-id copiera toujours le message "L'agent n'a pas d'identité" dans l'entrée authorized_keys de l'hôte distant.
  3. Entrée en double dans les clés autorisées : Je souhaite que ssh-copy-id valide l'entrée en double sur les clés autorisées de l'hôte distant. Si vous exécutez ssh-copy-id plusieurs fois sur l'hôte local, il continuera à ajouter la même clé sur le fichier authorized_keys de l'hôte distant sans vérifier les doublons. Même avec des entrées en double, tout fonctionne comme prévu. Mais j'aimerais que mon fichier authorized_keys ne soit pas encombré.


Si vous aimez cet article, merci de le mettre en signet sur Delicious et Trébucher .


Linux
  1. Connexion Ssh avec un mot de passe en texte clair comme paramètre ? ?

  2. Ssh – Comment accélérer la connexion Ssh trop lente ?

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

  4. Comment réinitialiser le mot de passe Plesk Admin en utilisant SSH dans Linux Server ?

  5. TigerVNC + SSH sans mot de passe VNC ?

Comment configurer une connexion SSH sans mot de passe à l'aide de ssh-keygen ?

Comment effectuer une sauvegarde Linux à distance à l'aide de SSH

Connexion SSH sans mot de passe en 3 étapes simples

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

Comment puis-je effectuer un `git pull` sans ressaisir mon mot de passe SSH ?

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