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 procéder, y compris la capture puis le transfert de la clé, le transfert direct de la clé, etc.
Je cherche le moyen le plus simple et recommandé de copier une clé, j'espère qu'il y a un wrapper de commodité quelque part dans le package Ubuntu ssh?
Le ssh-copy-id commande (dans le openssh-client package 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 (utilisation -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 clé privée) dans votre ~/.ssh répertoire, normalement nommé identity, id_rsa, id_dsa, id_ecdsa ou id_ed25519 (et la même chose 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 la sélectionnera automatiquement.
Dans le cas où 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 devriez utiliser des guillemets de cette façon (source):
J'ai pensé le poster ici encore, car c'est une bonne illustration de ce qui peut être réalisé en 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. De plus, il peut être préférable lors de la création du fichier de définir une autorisation minimale possible (essentiellement en lecture-écriture pour le propriétaire uniquement). Voici une commande plus avancée:
Après vous être connecté, cliquez sur le bouton à côté de Clés SSH:
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 c'est le commentaire.
Enregistrez la clé en appuyant sur Importer la Clé Publique
Si tout s'est bien passé, votre clé devrait maintenant être répertoriée sous Clés SSH:
Paquet ssh-import-id doit être installé sur la machine qui doit être accessible à distance. Ce paquet est installé avec le openssh-server paquet car c'est 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]
Cela téléchargera la clé publique à partir des serveurs Launchpad via HTTPS, ce qui vous protège des attaques MITM.
Sur Ubuntu Lucid et avant, vous pouvez accomplir la même chose avec:
ssh-copy-id c'est exactement ce qu'il fait. Je ne sais pas pourquoi certaines des autres réponses ici ajoutent des informations inexactes. L'aide montre ce qui suit:
~$ ssh-copy-id -hUsage: /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é comme un charme. L'exemple montre l'utilisation d'un port personnalisé de 2222, et en spécifiant une clé publique à ~/.ssh/path-to-rsa.pub
Avant d'exécuter la commande, j'ai en fait utilisé le -n basculez à la fin pour effectuer une exécution à sec qui a confirmé que la commande fonctionnera comme prévu. Une fois que je l'ai confirmé, j'ai exécuté la commande à nouveau comme ci-dessus, sans le -n commutateur.