copier les clés privées ssh sur un autre ordinateur

52

J'ai besoin d'utiliser un autre ordinateur pour accéder à mon serveur ssh. En effet, un vpn récemment implémenté dans mon université ne fonctionne pas sur mon ordinateur actuel et j'ai perdu l'accès au serveur.

Je ssh via des clés ssh cryptées. Puis-je copier ces clés sur le nouvel ordinateur (sur lequel le vpn fonctionne). J'ai essayé de copier les fichiers id_rsaet id_rsa.pubdans le ~/.sshdossier, mais les clés ne sont pas reconnues et aucune invite ne permet de saisir un mot de passe pour déchiffrer les clés.

EDIT: Je ne peux pas accéder au serveur pour générer une nouvelle paire de clés pour le nouvel ordinateur et je ne suis pas au pays, je ne peux donc pas y accéder physiquement.

Merci.

benj
la source
Est-ce que " id_rsh" est une faute de frappe?
ændrük
1
Vous pouvez en apprendre davantage sur le problème en essayant ssh -v -i ~/.ssh/id_rsa ssh-server.
mercredi
essayé ça. Il semble envoyer les clés mais ne demande jamais un mot de passe pour les déchiffrer. Je reçois également un étrange message générique "Itinérance non autorisée par le serveur". Les clés privées ne sont pas censées être copiées;). On dirait que je vais devoir faire confiance à une personne ayant un accès physique pour se connecter manuellement à mon serveur et modifier les paramètres ssh. Merci de votre aide.
benj
Les clés privées ne doivent jamais être copiées! CECI EST UN RISQUE DE SÉCURITÉ. Générez de nouvelles clés pour chaque nouvel appareil !!!!
Ether
@Ether Est-ce vrai? Et si vous avez besoin de reformater une machine? Il suffit de souffler la clé et de recommencer?
Nipponese

Réponses:

66

Vérifiez les autorisations et la propriété de votre fichier de clé privée. Du manuel ,

Ces fichiers contiennent des données sensibles et doivent être lisibles par l'utilisateur mais inaccessibles par d'autres (lecture / écriture / exécution). ssh ignorera simplement un fichier de clé privée s'il est accessible à d'autres.

En règle générale, les fichiers de clés doivent ressembler à ceci:

$ ls -l ~/.ssh/id_rsa*
-rw------- 1 benj benj 1766 Jun 22  2011 .ssh/id_rsa
-rw-r--r-- 1 benj benj  388 Jun 22  2011 .ssh/id_rsa.pub

que vous pouvez appliquer via:

$ chown benj:benj ~/.ssh/id_rsa*
$ chmod 600 ~/.ssh/id_rsa
$ chmod 644 ~/.ssh/id_rsa.pub
ændrük
la source
2
Merci. C'est utile à savoir. Lorsque vous copiez un fichier sur un autre ordinateur, les autorisations semblent changer pour cet utilisateur. J'ai couru les scripts chmod et chown au cas où. Malheureusement, cela n'a pas aidé mon problème.
benj
@John ツ cela aurait pu faire partie du problème pour moi, mais il semblait y avoir d'autres problèmes. J'ai finalement demandé à quelqu'un de se connecter physiquement au serveur et de configurer une nouvelle clé. Mais accepterons cela car cela couvre probablement une question clé.
benj
Cela a fonctionné pour moi, @benj.
Sinthia V
14

Essayez de lancer ssh-addSSH sur le serveur - vous devriez alors être invité à entrer le mot de passe, puis les sshconnexions suivantes pourront utiliser votre clé privée.

La ssh-addcommande ajoute les clés à l'agent de clé.

Gertvdijk
la source
1
Je ne pense pas que ce soit le problème, car 1) le client SSH peut se débrouiller sans agent de clé fonctionnel, 2) le serveur ne répondrait pas avec le message "itinérance non autorisée" et 3) le client ssh aurait le sien. Un message d'erreur lorsque vous parlez à l'agent de clé échoue d'une manière ou d'une autre. J'ai fait de ma réflexion une réponse .
gertvdijk
Cela a résolu le problème pour moi. Voir aussi la documentation Github pour cela .
Ionică Bizău
8

Les clés privées chiffrées conservent la clé publique correspondante non chiffrée . C’est ainsi que le client SSH peut se connecter au serveur distant sans vous demander le mot de passe (il ne propose que la partie publique à ce moment-là). Chaque fois que le serveur accepte la clé publique, le client de votre ordinateur souhaite déchiffrer la clé privée et vous demande la phrase secrète.

Désormais, chaque fois que le serveur accepte uniquement la connexion depuis une adresse IP spécifique, cela est déjà refusé lors de la première étape et explique le message que vous avez reçu du serveur "Itinérance non autorisée par le serveur".

Donc, ma meilleure hypothèse est que votre serveur est restreint de manière à autoriser uniquement des adresses IP spécifiques pour cette clé. Vous pouvez le faire de plusieurs manières, mais c’est une pratique courante dans ~/.ssh/authorized_keys:

from="192.168.1.2" ssh-rsa AAAAB3NzaC[...]

Pour prouver que vous pouvez lire la clé publique à partir d'une clé privée cryptée sans mot de passe, exécutez:

ssh-keygen -y -f /path/to/private/key
Gertvdijk
la source
1
Il s'agit d'un processus utile pour obtenir une réponse lorsque vous rencontrez un problème avec une connexion SSH. Je vous remercie.
Sinthia V