#1 Le 29/01/2013, à 23:52
- tmp6235
[resolu] ssh + ssh-agent au démarrage du pc
Bonjour à tous,
mon objectif général est de pouvoir rendre accessible via ssh ma machine (Home) qui se trouve derrière un NAT que je ne contrôle pas. Pour cela, je passe par le biais d'une debian (Middle) qui elle est « publique ».
Ma première étape a été de réussir à créer un tunnel inverse :
Castor@Home$ ssh -i ~/.ssh/id_rsa -R 12345:localhost:22 Pollux@Middle -fN # (1)
Enter passphrase for key '/home/Castor/.ssh/id_rsa':
Ça, ça marche ! Home est maintenant accessible depuis le monde entier (sauf quelques dictatures… hum…) via
anybody@anywhere$ ssh -p 12345 Castor@Middle
Castor@Middle's password:
La seconde étape fût de permettre la création de ce tunnel sans avoir à taper de mot de passe :
ssh-add ~/.ssh/id_rsa
Enter passphrase for key '/home/Castor/.ssh/id_rsa':
Ça, ça marche aussi je peux maintenant exécuter la commande (1) et ne pas avoir à entrer le mot de passe pour ma clé.
La troisième et dernière étape maintenant, et c'est ici que j'ai besoin de vous, c'est de permettre la création de ce tunnel au démarrage de ma machine. J'ai tout d'abord pensé à ajouter (1) à mon ~/.bashrc, mais cela voudrait dire que le tunnel n'est actif que lorsque je suis logué sur ma machine… Il faut donc que je sois logué pour pouvoir me loguer. Je vous laisse démêler ça. Ma seconde idée a été d'ajouter (1) à /etc/rc.local, mais cette fois-ci, l'étape 2 n'est plus d'aucune utilité car ssh-agent ne déverrouille automatiquement id_rsa que pour mon utilisateur Castor (@Home) ;
root@Home$ su -c "ssh -i /home/Castor/.ssh/id_rsa -R 12345:localhost:22 Pollux@Middle -fN" Castor
ne fonctionne pas non plus.
Je suis tout ouïe ! Avez-vous des conseils ? des remarques ? des solutions ? Je suis aussi ouvert à d'autres méthodes.
Bien Cordialement,
Castor & Pollux.
Dernière modification par tmp6235 (Le 31/01/2013, à 14:39)
Hors ligne
#2 Le 30/01/2013, à 00:43
- Maisondouf
Re : [resolu] ssh + ssh-agent au démarrage du pc
et l'inverse:
su Castor -c "ssh -i /home/Castor/.ssh/id_rsa -R 12345:localhost:22 Pollux@Middle -fN"
EDIT:
Pour vérifier simplement, ouvres un terminal et entres ça:
sudo -s
su Castor -c whoami
exit
Si ça répond 'Castor', c'est bon.
RE-EDIT: pas forcément si ssh se base sur $USER
sudo -s
su Castor -c "echo $USER"
exit
Là ça répond : root
Faut peut-être tricher en changeant le contenu de $USER:
AZERTY=$USER
export USER=Castor
su Castor -c "ssh -i /home/Castor/.ssh/id_rsa -R 12345:localhost:22 Pollux@Middle -fN"
export USER=$AZERTY
Dernière modification par Maisondouf (Le 30/01/2013, à 00:54)
ASUS M5A88-v EVO avec AMD FX(tm)-8120 Eight-Core Processor, OS principal Precise 12.04.1 LTS 63bits½
Bricoleur, menteur, inculte, inadapté social et mythomane, enfin d'après certains....
"the secret of my form is summed up in two words, no sport" (Winston Churchill)
Hors ligne
#3 Le 30/01/2013, à 09:21
- tiramiseb
Re : [resolu] ssh + ssh-agent au démarrage du pc
mais cette fois-ci, l'étape 2 n'est plus d'aucune utilité car ssh-agent ne déverrouille automatiquement id_rsa
Il faut que tu crées une clé SSH sans phrase de passe et que tu la places dans le répertoire ".ssh" de l'utilisateur "root".
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#4 Le 30/01/2013, à 15:09
- tmp6235
Re : [resolu] ssh + ssh-agent au démarrage du pc
Bonjour à vous deux.
Il faut que tu crées une clé SSH sans phrase de passe et que tu la places dans le répertoire ".ssh" de l'utilisateur "root".
Non, c'est hors de question, je ne créerais pas de clé en clair pour des raisons de sécurité.
@Maisondouf : Alors, dans l'ordre :
su Castor -c "ssh -i /home/Castor/.ssh/id_rsa -R 12345:localhost:22 Pollux@Middle -fN"
EDIT:
Pour vérifier simplement, ouvres un terminal et entres ça:sudo -s su Castor -c whoami exit
Si ça répond 'Castor', c'est bon.
Tout semble indiquer que
su user -c command
et
su -c command user
sont deux commandes équivalentes. Et effectivement, dans le second cas, ça m'affiche Castor.
RE-EDIT: pas forcément si ssh se base sur $USER
sudo -s su Castor -c "echo $USER" exit
Là ça répond : root
Oui, mais pas pour la raison que tu crois. Bash interprête les variables qui se trouvent entre double quote (") ; ainsi, lorsque tu écris <su Castor -c "echo $USER"> le programme su reçoit comme arguments ["Castor"; "-c"; "echo root"]. D'où le résultat. En revanche :
root@Home$ su Castor -c 'echo $USER'
Castor
J'ai une petite idée sur le « pourquoi-ça-marche-pas », mais je ne trouve pas de confirmation sur la toile : je crois que le dévérouillage automatique de la clé ne se fait pas parce qu'il n'y a pas d'ssh-agent qui tourne si Castor n'est pas logué. Mais j'ai beau lire et relire le manuel de ssh-agent, je ne trouve pas d'indice sur la voie à suivre.
Cdlt.
Hors ligne
#5 Le 30/01/2013, à 15:16
- tiramiseb
Re : [resolu] ssh + ssh-agent au démarrage du pc
tiramiseb a écrit :Il faut que tu crées une clé SSH sans phrase de passe et que tu la places dans le répertoire ".ssh" de l'utilisateur "root".
Non, c'est hors de question, je ne créerais pas de clé en clair pour des raisons de sécurité.
Qu'est-ce que tu appelles "clé en clair" !? Je n'ai jamais écrit "en clair".
Il s'agit juste de faire une clé qui n'a pas de phrase de passe, le chiffrement ensuite reste le même.
Bien sûr, il ne faut pas te faire voler la clé privée en question.
Mais si elle est dans le compte "root" d'une machine et qu'elle ne circule nulle part ailleurs, il n'y a pas beaucoup de risques.
Et de toute manière, si tu découvres qu'une clé privée est (peut-être) corrompue (qu'elle ait une phrase de passe ou non), tu la changes, non ?
je crois que le dévérouillage automatique de la clé ne se fait pas parce qu'il n'y a pas d'ssh-agent qui tourne si Castor n'est pas logué.
Ben oui.
Un ssh-agent est lié à un utilisateur en particulier, ce n'est pas un truc global à la machine.
Et de toute manière, lors du lancement de l'agent (ou lors de la première utilisation de la clé) il faut lui donner moyen de déverrouiller la clé : il faut entrer un mot de passe.
Et au démarrage de la machine, il n'y a personne pour entrer un mot de passe.
C'est pourquoi je suggère une clé sans phrase de passe (chose que j'utilise souvent et qui ne pose pas de problème).
Mais j'ai beau lire et relire le manuel de ssh-agent, je ne trouve pas d'indice sur la voie à suivre.
Ce que tu veux faire (une clé SSH avec une phrase de passe mais sans demander la phrase de passe) est impossible.
Soit le système demande la phrase de passe à un utilisateur, soit la clé n'a pas de phrase de passe.
Et par définition, au démarrage de l'ordinateur il n'y a pas d'utilisateur connecté.
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#6 Le 30/01/2013, à 23:03
- tmp6235
Re : [resolu] ssh + ssh-agent au démarrage du pc
Ce que tu veux faire [...] est impossible.
C'est là exactement la conclusion à laquelle je suis parvenu aujourd'hui. Le système de clés, de mots de passe, d'agent-ssh, etc. était pour moi assez mystique ; en me documentant abondamment sur le sujet j'ai commencé à y voir plus clair. Suivent les leçons que j'ai apprises (si quelqu'un tombe un jour sur ce thread, qu'il reparte pas les mains vides).
Effectivement, si je souhaite que ma machine (ci-avant Home) puisse se connecter toute seule à une seconde machine (ci-avant Middle), il faut qu'elle possède toutes les informations nécessaire à celà ; ie. toutes les informations doivent être accessibles, communément sur le disque dur. Contrairement à ce que j'imaginais, ssh-agent ne conserve les mot de passe des clés (RSA/DSA/…) qu'en mémoire volatile (RAM) ; au démarrage suivant, les identités ajoutées via ssh-add disparaissent.
Voici tout du moins quelques trucs que j'ai appris :
Par défaut, un ssh-agent est exécuté pour chaque session graphique initiée par [light]gdm. Les variables SSH_AUTH_SOCK (fichier socket UNIX lié à l'agent) et SSH_AGENT_PID (PID de l'agent) sont crées et « exportées », ce sont ces variables qui sont utilisées par ssh, ssh-add… pour sous-traiter à ssh-agent le challenge imposée par le sshd distant. Pour plus d'info, je conseille vivement la lecture de cette page très intéressante sur l'authentification ssh via ssh-agent (en anglais) : An Illustrated Guide to SSH Agent Forwarding.
Ainsi, il devient évident que l'opération suivante est vouée à l'échec :Castor@Home:~$ ps -ef|grep ssh-agent Castor 2262 2218 0 17:12 ? 00:00:00 /usr/bin/ssh-agent /usr/bin/dbus-launch --exit-with-session gnome-session --session=gnome Castor 6173 6070 0 21:20 pts/4 00:00:00 grep --color=auto ssh-agent Castor@Home:~$ ssh-add -L ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAA[...]AUoKMMkv0zlLwi9fFAG7HWQkabdaWp+n Castor@Home Castor@Home:~$ ssh Pollux@Middle Pollux@Middle:~$ exit Connection to Middle closed. Castor@Home:~$ sudo su root@Home:/home/Castor# ssh Pollux@Middle Pollux@Middle's password: ^C root@Home:/home/Castor# ssh-add -i /home/Castor/.ssh/id_rsa Could not open a connection to your authentication agent.
Une fois cela compris, on se doute de comment résoudre le problème
Castor@Home:~$ env|grep ^SSH | sed 's/^/export /' > /tmp/set-ssh-agent-variables Castor@Home:~$ sudo su root@Home:/home/Castor# . /tmp/set-ssh-agent-variables root@Home:/home/Castor# ssh-add -L ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAA[...]AUoKMMkv0zlLwi9fFAG7HWQkabdaWp+n /home/yscialom/.ssh/id_rsa root@Home:/home/Castor# ssh Pollux@Middle Pollux@Middle:~$
Happy ending .
Je le répète, si cette instance d'ssh-agent (pid 2262 dans l'exemple) est terminée (si l'utilisateur se délogue ou si le pc redémarre par exemple), la liste d'identités connues (celle obtenue via « ssh-agent -L ») sera supprimée puisqu'en mémoire volatile.
L'alternative que vous cherchez peut-être, à savoir pouvoir créer une connexion ssh entre deux hôtes de manière sécurisée et automatique ne passe pas par ssh-agent, mais par une configuration particulière de sshd couplée à l'utilisation de clés privées sans passphrase : il s'agit par exemple de ne permettre l’authentification via un couple de clés (privée/publique) qu'en provenance d'une IP/MAC particulière (mais attention, aux IP/MAC hijacking).
Bien cordialement.
Hors ligne
#7 Le 01/02/2013, à 01:21
- Maisondouf
Re : [resolu] ssh + ssh-agent au démarrage du pc
Merci pour le lien vers cette page, super bien illustrée !
A mon âge, il faut qu'il y ait des images pour que je comprenne
ASUS M5A88-v EVO avec AMD FX(tm)-8120 Eight-Core Processor, OS principal Precise 12.04.1 LTS 63bits½
Bricoleur, menteur, inculte, inadapté social et mythomane, enfin d'après certains....
"the secret of my form is summed up in two words, no sport" (Winston Churchill)
Hors ligne