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


Je suis paresseux à la maison et utilise l'authentification par mot de passe pour mes machines à la maison. Je suis prêt à passer à une authentification par clé. Il existe de nombreuses options sur le Web concernant la manière de procéder, notamment la mise en réseau, le transfert de la clé, l’extraction 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 suis déjà au courant sur comment désactiver les connexions par mot de passe.


296
2017-09-27 20:24


origine


askubuntu.com/questions/307881/… - Vineet


Réponses:


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

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

copie la clé publique de votre identité par défaut (utilisez -i identity_file pour d'autres identités) à 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 ~/.ssh répertoire, normalement nommé identity, id_rsa ou id_dsa (et 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 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.

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

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

408
2017-09-27 21:01



Quelle est l'identité par défaut? - Oxwivi
@Oxwivi: l'identité par défaut est votre clé ssh "standard". Il se compose de deux fichiers (clé publique et privée) dans votre ~/.ssh répertoire, normalement nommé `` identity, id_rsa` ou id_dsa (et 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 va simplement le choisir automatiquement. - Marcel Stimberg
pour les différents ports, utilisez ceci: ssh-copy-id "user@host -p 6842" - jibon57
Que se passe-t-il si le serveur distant sur lequel vous copiez n'autorise pas les invites de mot de passe et est verrouillé en gros pour un accès SSH? - Cyle
Sur Mac tu peux faire brew install ssh-copy-id puis exécutez la commande. - Avishai


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"'

Je pensais le poster ici, car c'est une bonne illustration de ce qui peut être réalisé dans code 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 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"'

113
2017-10-11 22:26



Ces commandes exactes fonctionnent également à partir d'un Mac aussi - Mihai P.
Il devrait fonctionner sous n'importe quel Unix avec la plupart des shell. J'ai mis à jour la publication avec une commande mise à jour au cas où le dossier .ssh n'existe pas du côté distant. - Huygens
le cat n'est pas nécessaire - une redirection d'entrée normale suffit, par ex. < ~/.ssh/id_rsa.pub | ssh ... - maxschlepzig
@Huygens Merci. Plus utile de retenir celui-ci, car vous n'avez pas besoin d'installer quoi que ce soit et il peut également être utile pour exécuter des commandes étrangères, par ex. modifier les autorisations côté serveur comme vous l'avez démontré dans votre exemple avancé. - Jonathan Komar
Je préfère de beaucoup cette manière, car elle vous permet d'utiliser ssh verbeux qui est utile pour comprendre pourquoi les choses sont cassées. sshcopyid vient de geler et n'a jamais fonctionné, cela s'est parfaitement passé. - Sirens


Méthode graphique

  1. Ouvrir Applications ▸ Mots de passe et clés ▸ Mes clés personnelles.
  2. Sélectionnez votre clé puis cliquez sur Éloigné ▸ Configurer la clé pour Secure Shell.

Set Up Computer for SSH Connection


25
2017-09-27 20:32



Je n'ai pas de "mots de passe et clés de cryptage" dans mon menu. - Jorge Castro
Quelle version d'Ubuntu utilisez-vous? Dans Ubuntu 10.04 LTS, cela devrait être disponible par défaut. - ændrük
10.10, vient d'ajouter l'étiquette. La réponse de Marcel est ce que je recherche, mais +1 pour votre réponse orientée bureau! - Jorge Castro
Ce programme est seahorse. - Gilles
Je pense que cette application est dans le menu System-> Preferences du 10.10 (ne peut pas le vérifier maintenant, je suis sur 10.04) - Huygens


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 Identifiez-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 paquet ssh-import-id doit être installé sur la machine qui doit être accessible à distance. Ce paquet est installé avec le openssh-serverpaquet comme c'est un paquet 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.

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

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


18
2018-06-10 19:20





pour le port personnalisé

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

-i commutateur 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


12
2018-03-08 20:16



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