Le moyen le plus simple de copier des clés SSH sur une autre machine?

293

Je suis paresseux à la maison et utilise une authentification par mot de passe pour mes machines domestiques. Je suis prêt à passer à une authentification par clé. Il existe de nombreuses options sur le Web pour ce faire, y compris la mise en réseau, puis le transfert de la clé, la saisie directe de la clé, etc.

Je cherche le moyen le plus simple et le plus recommandé de copier une clé, avec un peu de chance, il y a un wrapper pratique quelque part dans le paquet ssh Ubuntu?

Je sais déjà comment désactiver les connexions par mot de passe .

    
posée Jorge Castro 27.09.2010 - 22:24
la source

5 réponses

405

La commande ssh-copy-id (dans le package openssh-client et installée par défaut) fait exactement cela:

ssh-copy-id user@hostname.example.com

copie la clé publique de votre identité par défaut (utilisez -i identity_file pour les autres identités) sur l'hôte distant.

L'identité par défaut est votre clé ssh "standard". Il se compose de deux fichiers (clé publique et privée) dans votre répertoire ~/.ssh , normalement nommés identity , id_rsa ou id_dsa (et même avec .pub ), selon le type de clé. Si vous n'avez pas créé plus d'une clé ssh, vous n'avez pas à vous soucier de spécifier l'identité, ssh-copy-id le choisira automatiquement.

Si vous n’avez pas d’identité, vous pouvez en générer une avec l’outil ssh-keygen .

De plus, si le serveur utilise un port différent de celui par défaut ( 22 ), vous devez utiliser des guillemets de cette manière ( source ):

ssh-copy-id "user@hostname.example.com -p <port-number>"
    
réponse donnée Marcel Stimberg 27.09.2010 - 23:01
la source
111

J'aime la réponse de Marcel. Je ne connaissais pas cette commande. J'ai toujours utilisé ce que j'avais trouvé sur un site Web SUN :

cat ~/.ssh/id_rsa.pub | ssh <user>@<hostname> 'cat >> .ssh/authorized_keys && echo "Key copied"'

J'ai pensé à le poster ici, car c'est une bonne illustration de ce qui peut être réalisé dans code shell avec la puissance de ssh . Mais utiliser le ssh-copy-id est définitivement un moyen plus sûr de le faire correctement!

Notez que si le dossier .ssh n'existe pas déjà, la commande ci-dessus échouera. En outre, il peut être préférable de créer un fichier avec une autorisation minimale (en lecture-écriture uniquement pour le propriétaire uniquement). Voici une commande plus avancée:

cat ~/.ssh/id_rsa.pub | ssh <user>@<hostname> 'umask 0077; mkdir -p .ssh; cat >> .ssh/authorized_keys && echo "Key copied"'
    
réponse donnée Huygens 12.10.2010 - 00:26
la source
25

Méthode graphique

  1. Ouvrez Applications Mots de passe et clés Mes clés personnelles .
  2. Sélectionnez votre clé, puis cliquez sur Remote Configurer la clé pour Secure Shell .

    
réponse donnée ændrük 27.09.2010 - 22:32
la source
18

Sous Ubuntu, vous pouvez récupérer vos clés depuis Launchpad:

ssh-import-id [launchpad account name]

Détails :

  1. Vous avez besoin d'un compte Launchpad, alors connectez-vous ou créez un compte
  2. Après vous être connecté, cliquez sur le bouton en regard de Clés SSH:
  3. Collez le contenu de votre fichier de clé publique dans ce champ (y compris le commentaire). Une telle clé ressemble à:

    ssh-rsa AAAAB3Nza .... UyDOFDqJp lekensteyn
    

    Ici, ssh-rsa indique que la clé est une clé RSA, AAAAB3Nza .... UyDOFDqJp est la clé réelle et lekensteyn est le commentaire.

  4. Enregistrez la clé en appuyant sur Importer une clé publique
  5. Si tout s’est bien passé, votre clé devrait maintenant être répertoriée sous clés SSH:

Le package ssh-import-id doit être installé sur la machine à laquelle il faut accéder à distance. Ce package est installé avec le package openssh-server car il s'agit d'un package recommandé pour openssh-server . Après vous être assuré que ssh-import-id a été installé sur la machine client, exécutez:

ssh-import-id [launchpad account name]

Cela téléchargera la clé publique des serveurs Launchpad sur HTTPS, ce qui vous protégera des attaques MITM.

Sous Ubuntu Lucid et avant, vous pouvez accomplir la même chose avec:

wget https://launchpad.net/~[lp acount name]/+sshkeys -O - >> ~/.ssh/authorized_keys && echo >> ~/.ssh/authorized_keys

La commande echo est nécessaire pour obtenir une nouvelle ligne après la ligne avec la clé SSH.

  • Page de manuel de ssh-import-id
réponse donnée Lekensteyn 10.06.2011 - 21:20
la source
12

pour le port personnalisé

ssh-copy-id -i "user@hostname.example.com -p2222"

-i changez par défaut ~ / .ssh / id_rsa.pub, si vous voulez une autre clé, placez le chemin de la clé après -i

ATTENTION: Si vous n’avez pas écrit le -i, il copiera toutes vos clés trouvées dans ~ / .ssh

    
réponse donnée Omar A. Shaban 08.03.2013 - 21:16
la source

Lire d'autres questions sur les étiquettes