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