OVH Cloud OVH Cloud

ssh sans mot de passe

9 réponses
Avatar
Luc Martineau
Bonjour,

Sur mon réseau local, j'ai besoin d'exécuter une commande sur une machine à
partir d'ùne autre sans avoir à entrer de mot de passe.
La commande est /sbin/shutdown -h now.
Les deux machines sont branchées à un UPS et seulement une des deux peut être
éteinte proprement via l'UPS...

Je n'ai pas rsh d'installer. J'ai donc décider d'utiliser ssh.

Voici ce que j'ai fait:

Sur la machine (ledzep) qui exécutera la script avec la commande shutdown, j'ai
créé une clé:

[luc@ledzep luc]% ssh-keygen -t rsa1

J'ai choisi mot_passe comme passphrase (à refaire avec un meilleur passphrase...)

Ensuite, j'ai copié ~/.ssh/id_identity.pub
sur l'autre machine (the_doors, mon firewall...) dans le répertoire .ssh de
l'utilisateur avec lequel shutdown sera exécuté (c'est un utilisateur
"ordinaire"). Le fichier a été renommé authorized_keys. Les droits de ce fichier
sont 400.

Pour tester le tout, j'effectue

[luc@ledzep luc]% ssh-agent bash
[luc@ledzep luc]% ssh-add
[luc@ledzep luc]% slogin -l utilisateur_sur_the_doors the_doors 'ls /home'

On continue de me demander le mot de passe de l'utilisateur...

Que faire ?

Merci de consacrer votre temps pour me lire et répondre.

Luc

9 réponses

Avatar
Alexis Muller
Luc Martineau wrote:
[...]
On continue de me demander le mot de passe de l'utilisateur...

Que faire ?


Essai de configurer le serveur ssh de "the_doors" avec dans le fichier
/etc/ssh/sshd_config :
PasswordAuthentication no

Essai ensuite de te connecter depuis avec "en verbose" :
ssh-add
ssh -v

Tu devrais obtenir des infos intéressantes...

Avatar
TiChou
Dans l'article news:NytUb.19689$,
Luc Martineau écrivait :

Bonjour,


Bonjour,

Sur mon réseau local, j'ai besoin d'exécuter une commande sur une
machine à partir d'ùne autre sans avoir à entrer de mot de passe.
La commande est /sbin/shutdown -h now.
Les deux machines sont branchées à un UPS et seulement une des deux
peut être éteinte proprement via l'UPS...

Je n'ai pas rsh d'installer. J'ai donc décider d'utiliser ssh.

Voici ce que j'ai fait:

Sur la machine (ledzep) qui exécutera la script avec la commande
shutdown, j'ai créé une clé:

[ luc]% ssh-keygen -t rsa1


Les clés RSA1 sont à utiliser avec la version 1 du protocole SSH.

J'ai choisi mot_passe comme passphrase (à refaire avec un meilleur
passphrase...)

Ensuite, j'ai copié ~/.ssh/id_identity.pub
sur l'autre machine (the_doors, mon firewall...) dans le répertoire
.ssh de l'utilisateur avec lequel shutdown sera exécuté (c'est un
utilisateur "ordinaire"). Le fichier a été renommé authorized_keys.
Les droits de ce fichier sont 400.


Jusqu'ici tout est correct. :)

Pour tester le tout, j'effectue

[ luc]% ssh-agent bash
[ luc]% ssh-add


L'agent SSH est inutile dans votre cas. Oubliez le.

[ luc]% slogin -l utilisateur_sur_the_doors the_doors 'ls
/home'

On continue de me demander le mot de passe de l'utilisateur...


Oui, certainement parce que la session SSH a été négociée avec la version 2
du protocole SSH et donc ignore votre jeu de clés RSA1.
Par défaut sur les serveurs OpenSSH on établit d'abord une connexion avec le
protocole 2 si le client l'accepte et ensuite avec le protocole 1 si le
client a refusé le protocole 2.

Que faire ?


Plusieurs possibilités :

- Modifier l'ordre des protocoles dans la configuration du serveur ssh de
la machine "the_doors" en plaçant la ligne 'Protocol 1,2' dans le fichier
/etc/ssh/sshd_config. Je vous le déconseille fortement.

- Forcer le client ssh sur la machine "ledzep" à n'utiliser que le
protocole 1 en passant comme paramètre '-1' à la commande 'ssh' :

$ ssh -1 'ls /home'

(Notez que la commande 'slogin' est un lien pointant sur la commande 'ssh')

- Et enfin la solution que je vous conseille avant tout, c'est d'utiliser
un jeu de clé RSA pour le protocole 2 :

$ ssh-keygen -t rsa
$ ssh 'umask 077;mkdir .ssh'
$ scp ~/.ssh/id_rsa.pub
:.ssh/authorized_keys

et

$ ssh 'ls /home'

pour voir le résultat.

Attention que si vous avez définit une passphrase lors de la génération du
jeu de clé RSA, la passphrase vous sera alors demandé lors de la session
SSH. Si ne vous souhaitez ne rien saisir lors de cette session, mettez une
passphrase vide.

Merci de consacrer votre temps pour me lire et répondre.


De rien.

--
TiChou

Avatar
Luc Martineau


Pour tester le tout, j'effectue

[ luc]% ssh-agent bash
[ luc]% ssh-add



L'agent SSH est inutile dans votre cas. Oubliez le.


Dans mes lectures subséquentes, je crois que ça serait une bonne pratique de

l'utiliser.

Mais puisque c'est peu probable que quelqu'un vienne me voler ma clé pour ce
connecter à mon vieux P133, je suis prêt à prendre le risque ;-)


[ luc]% slogin -l utilisateur_sur_the_doors the_doors 'ls
/home'

On continue de me demander le mot de passe de l'utilisateur...




Oui, certainement parce que la session SSH a été négociée avec la version 2
du protocole SSH et donc ignore votre jeu de clés RSA1.
Par défaut sur les serveurs OpenSSH on établit d'abord une connexion avec le
protocole 2 si le client l'accepte et ensuite avec le protocole 1 si le
client a refusé le protocole 2.


Que faire ?



Plusieurs possibilités :

- Modifier l'ordre des protocoles dans la configuration du serveur ssh de
la machine "the_doors" en plaçant la ligne 'Protocol 1,2' dans le fichier
/etc/ssh/sshd_config. Je vous le déconseille fortement.

- Forcer le client ssh sur la machine "ledzep" à n'utiliser que le
protocole 1 en passant comme paramètre '-1' à la commande 'ssh' :

$ ssh -1 'ls /home'

(Notez que la commande 'slogin' est un lien pointant sur la commande 'ssh')

- Et enfin la solution que je vous conseille avant tout, c'est d'utiliser
un jeu de clé RSA pour le protocole 2 :

$ ssh-keygen -t rsa
$ ssh 'umask 077;mkdir .ssh'
$ scp ~/.ssh/id_rsa.pub
:.ssh/authorized_keys

et

$ ssh 'ls /home'

pour voir le résultat.

Attention que si vous avez définit une passphrase lors de la génération du
jeu de clé RSA, la passphrase vous sera alors demandé lors de la session
SSH. Si ne vous souhaitez ne rien saisir lors de cette session, mettez une
passphrase vide.


J'ai décidé d'utiliser le protocole 2. Cependant,il faut utiliser

authorisez_keys2 avec ce type de protocole.

J'avais
Permission denied (publickey,keyboard-interactive)

Je n'ai finalement pas eu à modifier les fichiers de configuration. Il n'y a pas
grand chose que j'ai pas essayé :-)


Merci pour tout! J'en ai ramé un coup...

C'est pourtant si simple quand on sait quoi faire!


Luc


Avatar
TiChou
Dans l'article news:JAEUb.23378$,
Luc Martineau écrivait :

L'agent SSH est inutile dans votre cas. Oubliez le.

Dans mes lectures subséquentes, je crois que ça serait une bonne

pratique de l'utiliser.

Mais puisque c'est peu probable que quelqu'un vienne me voler ma clé
pour ce connecter à mon vieux P133, je suis prêt à prendre le risque
;-)


L'agent permet d'utiliser la clé privé de la machine locale si on désire
alors se connecter vers une autre machine cliente sans que la clé soit
présente sur la machine cliente. Ca n'était pas le cas dans votre
utilisation. Ou alors j'ai loupé une étape.

J'ai décidé d'utiliser le protocole 2. Cependant,il faut utiliser
authorisez_keys2 avec ce type de protocole.


Depuis la version 3.0 de OpenSSH, les fichiers authorized_keys2 sont
obsolètes. Les versions de protocole 1 et 2 de SSH utilisent le même fichier
authorized_keys. D'ailleurs les man de OpenSSH ne font plus référence à
authorized_keys2, même si pour des raisons de compatibilités sshd continue à
reconnaître ce fichier.

J'avais
Permission denied (publickey,keyboard-interactive)


Certainement parce que vous utilisez une vieille version d'OpenSSH. Pensez
alors à mettre à jour car OpenSSH regorge de failles !

Merci pour tout! J'en ai ramé un coup...

C'est pourtant si simple quand on sait quoi faire!


Oui. ;) Et généralement pour savoir fauire il suffit de lire les
documentations. :)

--
TiChou


Avatar
Lionel
Luc Martineau wrote:

Bonjour,

Sur mon réseau local, j'ai besoin d'exécuter une commande sur une machine
à partir d'ùne autre sans avoir à entrer de mot de passe.
La commande est /sbin/shutdown -h now.
Les deux machines sont branchées à un UPS et seulement une des deux peut
être éteinte proprement via l'UPS...

Je n'ai pas rsh d'installer. J'ai donc décider d'utiliser ssh.

Voici ce que j'ai fait:

Sur la machine (ledzep) qui exécutera la script avec la commande shutdown,
j'ai créé une clé:

[ luc]% ssh-keygen -t rsa1

J'ai choisi mot_passe comme passphrase (à refaire avec un meilleur
passphrase...)

Ensuite, j'ai copié ~/.ssh/id_identity.pub
sur l'autre machine (the_doors, mon firewall...) dans le répertoire .ssh
de l'utilisateur avec lequel shutdown sera exécuté (c'est un utilisateur
"ordinaire"). Le fichier a été renommé authorized_keys. Les droits de ce
fichier sont 400.

Pour tester le tout, j'effectue

[ luc]% ssh-agent bash
[ luc]% ssh-add
[ luc]% slogin -l utilisateur_sur_the_doors the_doors 'ls /home'

On continue de me demander le mot de passe de l'utilisateur...

Que faire ?

Merci de consacrer votre temps pour me lire et répondre.

Luc


J'ai déja fait la manip en question de la maniere suivante :
sur la machine1:
su
ssh-keygen -t dsa
scp /root/.ssh/id_dsa.pub machine2:/root/ (il va demander le mot de passe
root)
ssh machine2 (re mot de passe)
cat /root/id_dsa.pub >>/root/.ssh/authorized_keys
rm /root/id_dsa.pub

Tu peux faire la même chose avec n'importe quel utilisateur autorisé à
stopper la machine.

Ensuite tu peux lancer la commande : ssh machine2 'commande' sans rentrer de
mot de passe.
Il y a peut être d'autres facon de faire mais je sais que comme ça ça marche
A+
Lionel

Avatar
Alexis Muller
TiChou wrote:
[...]
L'agent permet d'utiliser la clé privé de la machine locale si on désire
alors se connecter vers une autre machine cliente sans que la clé soit
présente sur la machine cliente. Ca n'était pas le cas dans votre
utilisation. Ou alors j'ai loupé une étape.
[...]


Vous avez dû mal vous exprimer, l'agent ne permet en aucun cas de se
connecter sur une machine qui ne posséde pas une copie de notre clef
(publique).

Si la machine à laquelle on souhaite se connecter est configuré pour
n'accépter que l'autentification par clef (et non par mots de passe),
les élements suivants sont nécessaires :

- la clef privée sur la machine depuis laquelle on veux se connecter.
- la clef publique correspondante sur la machine à laquelle on souhaite
se connecter.

Par mesure de sécurité, la clef privée est protégés par mot de passe.
Celui-ci est demandé à chaque connection. L'agent peut-être utilisé pour
gardé en mêmoire la clef privée et eviter ansi de devoir donner le mot
de passe a chaque connection.

Avatar
TiChou
Dans l'article news:c07gtc$8pc$,
Alexis Muller écrivait :

TiChou wrote:
[...]
L'agent permet d'utiliser la clé privé de la machine locale si on désire
alors se connecter vers une autre machine cliente sans que la clé soit
présente sur la machine cliente. Ca n'était pas le cas dans votre
utilisation. Ou alors j'ai loupé une étape.
[...]


Vous avez dû mal vous exprimer, l'agent ne permet en aucun cas de se
connecter sur une machine qui ne posséde pas une copie de notre clef
(publique).


Il ne me semble pas avoir dit ça. Il va de sois effectivement que pour se
connecter sur une machine, avec l'authentification par clé, la présence de
la clé publique est indispensable.
Et l'agent n'intervient pas directement dans la connexion, il ne fait que
relayer au client ssh la clé privé d'une machine cliente à une autre.

Si la machine à laquelle on souhaite se connecter est configuré pour
n'accépter que l'autentification par clef (et non par mots de passe),
les élements suivants sont nécessaires :

- la clef privée sur la machine depuis laquelle on veux se connecter.


Sauf si on s'est préalablement connecté sur cette machine depuis une autre
(ce que j'appelle la machine locale) et que l'agent SSH a été activé. Et
c'est bien de cela dont je parlais au départ et cela ne correspondait donc
pas à la situation de Luc Martineau qui avait activé son agent SSH.

- la clef publique correspondante sur la machine à laquelle on souhaite
se connecter.


Oui.

Par mesure de sécurité, la clef privée est protégés par mot de passe.
Celui-ci est demandé à chaque connection. L'agent peut-être utilisé pour
gardé en mêmoire la clef privée et eviter ansi de devoir donner le mot
de passe a chaque connection.


--
TiChou


Avatar
Alexis Muller
On Mon, 09 Feb 2004 17:23:33 +0100, TiChou wrote:

Dans l'article news:c07gtc$8pc$,
Alexis Muller écrivait :
[...]

- la clef privée sur la machine depuis laquelle on veux se connecter.


Sauf si on s'est préalablement connecté sur cette machine depuis une autre
(ce que j'appelle la machine locale) et que l'agent SSH a été activé. Et
c'est bien de cela dont je parlais au départ et cela ne correspondait donc
pas à la situation de Luc Martineau qui avait activé son agent SSH.


Ce comportement est une option possible des outils openSSH. Mais la
fonction première de l'agent SSH reste la mémorisation de la clef
privée sous forme décrypté, pas le "forward" de clefs.

Donc Luc peut très bien en avoir l'utilité s'il souhaite protégé
l'accès à la machine distante par clef sans devoir taper le mot
de passe au moment ou son scripte en aura besoin.

Personnellement, l'agent me permet de me loguer à des machines
différentes une bonne dizaine de fois par jour en ne tapant ma
"passe phrase" qu'une fois, heureusement ;-)

--
Alexis Muller
Laboratoire d'Informatique Fondamentale de Lille (LIFL)
Universite de Lille 1 - 59655 Villeneuve d'Ascq Cedex
Email : - Web : http://www.lifl.fr/~mullera


Avatar
Erwann ABALEA
On Mon, 9 Feb 2004, Alexis Muller wrote:

[...]
Ce comportement est une option possible des outils openSSH. Mais la
fonction première de l'agent SSH reste la mémorisation de la clef
privée sous forme décrypté, pas le "forward" de clefs.


C'est vrai. Et le forward d'agent peut être pratique par moments.

Personnellement, l'agent me permet de me loguer à des machines
différentes une bonne dizaine de fois par jour en ne tapant ma
"passe phrase" qu'une fois, heureusement ;-)


J'ai également un usage intensif de SSH (Telnet et FTP sont bannis chez
nous, et même chez moi), et je ne tape ma passphrase qu'une fois après le
reboot de ma station. Si je me loggue et que l'agent est lancé, mon shell
recupère les variables d'environnement qui vont bien, et je peux donc
laisser tourner mon agent même quand je ne suis pas là.

Evidemment, je ne fais ce genre de choses que sur les machines dont je
suis le seul utilisateur, et j'ouvre très peu (voire aucun) service sur
ces machines.

--
Erwann ABALEA - RSA PGP Key ID: 0x2D0EABD5
-----
J'ai bien compris le fonctionnement, merci. Un vote NON est une censure
inadmissible. Je ne vois pas, finalement, ce qui empèche tout un chacun
de créer SON groupe comme on peut créer son site Web.
-+-Rocou in : GNU - Le vote sur Usenet expliqué à mon Neuneu -+-