Il y a deux machines Linux, A et B. Les scripts s'exécutant sur A doivent pouvoir SSH dans B. Donc A génère une clé publique (probablement une ssh-keygen
génération id_rsa.pub
), puis utilise sa clé privée respective (encore une fois probablement id_rsa
) pour faire cette connexion SSH.
Si quelque chose que j'ai dit ci-dessus est incorrect ou trompé, veuillez commencer par me corriger!
En supposant que je suis plus ou moins sur la cible:
- Comment A «donne-t-il» à B sa clé publique (
id_rsa.pub
)? Doit-il s'agir d'un processus manuel ou peut-il être automatisé? Si c'est manuel, quel est le processus? S'il est automatisé, quelle est la commande? Lorsque B "obtient" cette clé publique, où va-t-elle ou est-elle stockée? - Lors du lancement de la connexion SSH vers B, comment A «utilise-t-il» sa clé privée (
id_rsa
) dans le cadre de cette connexion?
linux
ssh
public-key-encryption
user3178622
la source
la source
Réponses:
ssh-keygen
génère à la fois les clés publiques et privées, qui résident initialement uniquement localement. Donner la clé publique à un autre hôte est quelque chose que l'utilisateur devrait faire manuellement, soit en l'envoyant à un responsable du serveur B, soit si vous avez un compte avec un mot de passe, vous pouvez vous connecter et le mettre vous-même. Afin de permettre la connexion sans mot de passe au serveur B, vous devez ajouter votre clé publique au fichier ~ / .ssh / authorized_keys sur le serveur B (une clé publique par ligne, il peut y avoir un nombre quelconque de clés dans ce fichier). Il existe une commande linuxssh-copy-id
qui copiera l'ID pour vous et le mettra dans le fichier.Par défaut, ssh utilisera le fichier ~ / .ssh / id_XXX comme clé privée. XXX peut être rsa, dsa ou tout autre protocole pour lequel une clé a été générée. IIRC, dsa est vieux et ne doit pas être utilisé. Si vous souhaitez utiliser une autre clé privée, vous pouvez la spécifier dans votre commande ssh à l'aide de
-i
. Tant que la clé privée utilisée correspond à une clé publique sur la machine distante (dans le fichier authorized_keys du compte de l'utilisateur auquel vous vous connectez), vous n'aurez pas besoin de fournir un mot de passe.la source
ssh-keygen
est exécuté, vous mentionnez que les deux clés "résident uniquement localement"? Où?!? Comme dans, dans quel dossier puis-je naviguer et voirid_rsa.pub
etid_rsa
? (2) Je pensais quessh-add
c'était la commande pour ajouter une clé publique àauthorized_keys
, non? Quelle est la différence entressh-copy-id
etssh-add
? Merci encore!~/.ssh/id_rsa
re '2', ssh-add n'est pas pour l'ajout à des clés autorisées, c'est pour l'ajout à un trousseau .. Je n'ai pas utilisé ssh -ajoute quand même. ssh-add consiste à vous permettre de ne pas avoir à saisir de phrase clé à chaque fois que vous utilisez une clé qui nécessite une phrase clé. Donc, si vos clés ssh ne nécessitent pas de phrase clé, je suppose qu'il n'y a aucune raison d'utiliser ssh-add et je pense que vous devrez toujours utiliser ssh-copy-id ou faire la copie manuelle de la clé publique dans authorized_keysOuais
mais B a besoin que la clé publique de A soit répertoriée dans le fichier des clés autorisées de B pour que A puisse se connecter à B
vous pouvez également supprimer id_rsa.pub et ssh en B et cela fonctionnera toujours, car la clé publique est générée à chaque connexion ssh et n'est stockée dans aucun id_rsa.pub
manuel - quelque chose comme
de-
ou encore plus manuellement, pour décomposer la commande
A $
cat id_rsa.pub | ssh user@host 'cat>~/a.a'
puis sur B, assurez-vous que ~ / .ssh existe puis faites
cat a.a >> ~/.ssh/authorized_keys
et vous pouvez attraper les clés autorisées de B avant et après pour vous assurer que la clé est répertoriée.
Ou vous pouvez envoyer id_rsa.pub par e-mail à un compte de messagerie, puis à partir de B, B peut vérifier l'e-mail et ajouter le contenu de id_rsa.pub dans son fichier authorized_keys
automatiquement
La commande ssh-copy-id
Vous devez pouvoir entrer ssh, vous avez donc besoin d'un accès par mot de passe
Au lieu de faire ssh user @ host, vous faites ssh-copy-id user @ host et vous êtes invité à entrer un mot de passe, vous le saisissez, vous y êtes, il copiera la clé publique. Et la prochaine fois que vous utiliserez ssh user @ host, il utilisera la clé.
B's ~ / .ssh / authorized_keys
eh bien, je ne sais pas grand-chose à ce sujet, du haut de ma tête, mais tout ce qui est crypté avec une clé peut être décrypté avec l'autre clé, et s'identifier est un peu différent de l'envoi de données .. et il peut y avoir quelque chose sur une clé temporaire aussi.
la source