web-dev-qa-db-fra.com

Meilleure façon de copier les clés SSH sur une autre machine?

Je suis paresseux à la maison et utilise l'authentification par mot de passe pour mes ordinateurs personnels. Je suis prêt à passer à l'authentification par clé. Il existe de nombreuses options sur le Web pour ce faire, y compris catting puis claquage de la clé, scping la clé directement, etc.

Je cherche le moyen le plus simple et le plus recommandé de copier une clé, avec un peu de chance qu'il existe un wrapper de commodité quelque part dans le paquet ssh Ubuntu?

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

329
Jorge Castro

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

ssh-copy-id [email protected]

copie la clé publique de votre identité par défaut (utilisez -i identity_file pour d’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 clé privée) dans votre répertoire ~/.ssh, généralement nommés identity, id_rsa, id_dsa, id_ecdsa ou id_ed25519 (de même que .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 la spécification de l'identité, ssh-copy-id la choisira simplement 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 les guillemets de cette façon ( source ):

ssh-copy-id "[email protected] -p <port-number>"
450
Marcel Stimberg

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 de Sun :

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

J'ai pensé le poster ici encore, parce que c'est une bonne illustration de ce que l'on peut obtenir avec du code shell avec le pouvoir 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, lors de la création du fichier, il peut être préférable de définir une autorisation minimale possible (en 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"'
123
Huygens

Méthode graphique

  1. Ouvrir ApplicationsMots de passe et clésMes clés personnelles.
  2. Sélectionnez votre clé, puis cliquez sur DistantConfigurer la clé pour Secure Shell.

Set Up Computer for SSH Connection

27
ændrük

Sur Ubuntu, vous pouvez récupérer vos clés dans Launchpad:

ssh-import-id [launchpad account name]

Détails :

  1. Vous avez besoin d’un compte Launchpad donc vous connecter ou créer un compte
  2. Après vous ê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 lekensteynest 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 listée sous clés SSH:

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

ssh-import-id [launchpad account name]

Cela téléchargera la clé publique des serveurs du tableau de bord via HTTPS, 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

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

18
Lekensteyn

pour port personnalisé

ssh-copy-id -i "[email protected] -p2222"

L'option -i par défaut est ~/.ssh/id_rsa.pub, si vous voulez une autre clé, indiquez le chemin de la clé après -i

ATTENTION: Si vous n'avez pas écrit le -i, toutes les clés trouvées dans ~/.ssh seront copiées.

13
Omar A. Shaban

ssh-copy-id fait exactement cela. Je ne sais pas pourquoi certaines des autres réponses ajoutent des informations inexactes. L'aide montre les éléments suivants:

~$ ssh-copy-id -h
Usage: /usr/bin/ssh-copy-id [-h|-?|-f|-n] [-i [identity_file]] [-p port] [[-o <ssh -o options>] ...] [user@]hostname
    -f: force mode -- copy keys without trying to check if they are already installed
    -n: dry run    -- no keys are actually copied
    -h|-?: print this help

Je viens d'essayer ce qui suit sur le client Ubuntu 18.04 avec un serveur CentOS 7.6 et cela a fonctionné à merveille. L'exemple montre l'utilisation d'un port personnalisé de 2222 et la spécification d'une clé publique à ~/.ssh/path-to-rsa.pub

$ ssh-copy-id -i ~/.ssh/path-to-rsa.pub -p 2222 [email protected]

Avant d’exécuter la commande, j’ai utilisé le commutateur -n à la fin pour effectuer un essai à blanc qui a confirmé que la commande fonctionnerait comme prévu. Une fois confirmé, j’exécutai à nouveau la commande comme ci-dessus, sans le commutateur -n.

0
isapir