Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 smile 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 smile ? 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

tmp6235 a écrit :

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

Hors ligne

#4 Le 30/01/2013, à 15:09

tmp6235

Re : [resolu] ssh + ssh-agent au démarrage du pc

Bonjour à vous deux.

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é.




@Maisondouf : Alors, dans l'ordre :

Maisondouf a écrit :
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.





Maisondouf a écrit :

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

tmp6235 a écrit :
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 ?


tmp6235 a écrit :

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).

tmp6235 a écrit :

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é.

Hors ligne

#6 Le 30/01/2013, à 23:03

tmp6235

Re : [resolu] ssh + ssh-agent au démarrage du pc

tiramiseb a écrit :

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 :

  1. 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.
  2. Une fois cela compris, on se doute de comment résoudre le problème smile

    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 smile.

  3. 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.

  4. 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 lol


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