432 votes

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

Je suis paresseux à la maison et j'utilise l'authentification par mot de passe pour mes machines domestiques. Je suis prêt à passer à l'authentification par clé. Il existe de nombreuses options sur le Web sur la façon de le faire, y compris le chat puis le sshing de la clé, scping la clé directement, etc.

Je cherche le moyen le plus simple et le plus recommandé de copier une clé, en espérant qu'il y ait une enveloppe pratique quelque part dans le paquet ssh d'Ubuntu ?

Je suis déjà au courant sur comment désactiver les connexions par mot de passe .

1 votes

584voto

lubos hasko Points 13669

El ssh-copy-id (dans la section openssh-client et installé par défaut) fait exactement cela :

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

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

L'identité par défaut est votre clé ssh "standard". Elle est constituée de deux fichiers (clé publique et privée) dans votre répertoire ~/.ssh le répertoire, normalement nommé identity , id_rsa , id_dsa , id_ecdsa o id_ed25519 (et de même avec .pub ), en fonction du 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 la choisira automatiquement.

Dans le cas où vous n'avez pas d'identité, vous pouvez en générer une avec l'outil ssh-keygen .

En outre, si le serveur utilise un port différent de celui par défaut ( 22 ), vous devez utiliser les guillemets de cette manière ( fuente ) :

ssh-copy-id "user@hostname.example.com -p <port-number>"

1 votes

Quelle est l'identité par défaut ?

0 votes

@Oxwivi : L'identité par défaut est votre clé ssh "standard". Elle est constituée de deux fichiers (clé publique et privée) dans votre répertoire ~/.ssh le répertoire, normalement nommé ``identité , id_rsa" ou id_dsa (et de même avec .pub ), en fonction du type de clé. Si vous n'avez pas créé plus d'une clé ssh, vous n'avez pas à vous soucier de spécifier le fichier, ssh-copy-id le choisira automatiquement.

19 votes

Pour un port différent, utilisez ceci : ssh-copy-id "user@host -p 6842"

164voto

Pete Points 170

J'aime la réponse de Marcel. Je ne connaissais pas cette commande. J'ai toujours utilisé ce que j'avais trouvé sur le site de la Site web d'Oracle :

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

J'ai pensé le poster ici encore, parce qu'il illustre bien ce que l'on peut réaliser en Shell. avec le pouvoir de ssh . Mais en utilisant 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, lors de la création du fichier, de définir une permission minimale possible (en gros, lecture-écriture 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"'

2 votes

Ces commandes exactes fonctionnent aussi sur un Mac.

0 votes

Il devrait fonctionner sous n'importe quel Unix avec la plupart des Shell. J'ai mis à jour le post avec une commande mise à jour au cas où le dossier .ssh n'existe pas du côté distant.

2 votes

Le site cat n'est pas nécessaire - une redirection d'entrée normale est suffisante, par ex. < ~/.ssh/id_rsa.pub | ssh ...

32voto

Kyle Gibbons Points 133

Méthode graphique

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

Set Up Computer for SSH Connection

1 votes

Je n'ai pas "Mots de passe et clés de chiffrement" dans mon menu.

0 votes

Quelle version d'Ubuntu utilisez-vous ? Dans Ubuntu 10.04 LTS, cela devrait être disponible par défaut.

0 votes

10.10, je viens d'ajouter la balise. La réponse de Marcel est ce que je cherche, mais +1 pour votre réponse orientée bureau !

20voto

Lekensteyn Points 162346

Sur 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 pour se connecter ou créer un compte

  2. Après s'être connecté, cliquez sur le bouton à côté 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 figurer dans la liste suivante Clés SSH :

Le paquet ssh-import-id doit être installé sur la machine à laquelle on doit accéder à distance. Ce paquet est installé en même temps que le openssh-server car il s'agit d'un paquet recommandé pour openssh-server . Après s'être assuré que ssh-import-id a été installé Sur la machine cliente, exécutez :

ssh-import-id [launchpad account name]

Cette opération permet de télécharger la clé publique depuis les serveurs de Launchpad via HTTPS, ce qui vous protège des attaques MITM.

Sur 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

El echo est nécessaire pour obtenir un saut de ligne supplémentaire après la ligne contenant la clé SSH.

16voto

Omar S. Points 271

Pour port personnalisé

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

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

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

1 votes

Vous êtes sûr de cet AVERTISSEMENT ? "-i identity_file - Utiliser uniquement la ou les clés contenues dans identity_file (plutôt que de rechercher les identités via ssh-add(1) ou dans le fichier default_ID_file). Si le nom de fichier ne se termine pas par .pub, il est ajouté. Si le nom de fichier est omis, le fichier default_ID_file est utilisé."

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X