CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[PHP] connexion via SSH

kiri_le_clown
kiri_le_clown
Niveau 9
11 mai 2011 à 16:16:15

:salut:

Je viens à vous car j'ai un petit problème :-p
Alors voilà j'aimerai lister le contenu d'un dossier présent sur un serveur via une connexion en SSH.

Le problème c'est que je ne peux pas installer la librairie pour SSH2 qui permet de se connecter au serveur.

J'ai donc essayer de me connecter (avec exec) au serveur
(avec le mot de passe en clair pour le moment) :

exec("ssh ".$login.":"$password."@".$station);

cependant cela ne marche pas, je ne comprend pas pourquoi ?
si je fais un echo de cette commande, rien ne s'affiche.

Si je tape cette commande dans un terminal on me demande d'entrer un mot de passe.. pourquoi ?

chris_27
chris_27
Niveau 10
11 mai 2011 à 16:50:48

Bonjour,

« cependant cela ne marche pas, je ne comprend pas pourquoi ? »
:d) j'ai envie de répondre : parce que ssh v1 c'est tellement pourri que plus personne n'autorise ça.

Si tu veux vraiment utiliser la version 1 du protocole (à tes risques et périls), il faut :
1) autoriser la version 1 coté client (option Protocol dans ssh_config),
2) autoriser la version 1 coté serveur (option Protocol dans sshd_config),
3) utiliser l'option "-1" de ssh.

Sinon, tu peux aussi opter pour une autre méthode qui te conduirait au résultat que tu désires.

kiri_le_clown
kiri_le_clown
Niveau 9
12 mai 2011 à 09:12:02

Merci pour ta réponse :)

Pour x raisons je ne peux pas installer SSH2 (ce n'est pas mon choix, alors je fais pression mais pour le moment je ne peux pas.. ^^)

J'ai créer 2 fichiers nécessaires à l'authentification pour ssh (avec ssh-agent).
Je tape donc cette commande

ssh -i /xx/xxx/ssh_key login@password ls /

dans la console j'ai bien le retour de la commande ls

Si j'execute cette commande dans PHP

echo exec("ssh -i /xx/xxx/ssh_key login@password ls /");

je n'arrive pas à obtenir le résultat ?
Pareil avec la commande system

Je ne sais donc même pas si la connexion via PHP se fait bien où si c'est le retour de la commande qui n'est pas affiché.

Saurais-tu quel est le problème ?

kiri_le_clown
kiri_le_clown
Niveau 9
12 mai 2011 à 09:38:47

En fait si je fais

if (exec("ssh -i /xx/xxx/ssh_key login@password"))
echo "Connexion effectuée";
else
echo "Echec connexion";

mon PHP me retourne "Echec connexion"

kiri_le_clown
kiri_le_clown
Niveau 9
12 mai 2011 à 10:40:03

Je viens de me rendre compte que j'ai mis @password dans mes posts du dessus, c'est évidemment @l'IP de la station que je met là et non le mot de passe, pas bien réveille ^^

kiri_le_clown
kiri_le_clown
Niveau 9
12 mai 2011 à 11:47:14

Faut vraiment faire une fonction "Edit" ^^ ...

Alors voilà j'ai pensé à aller voir le fichier log des erreurs
et voilà ce qui apparait

Could not create directory '/nonexistant/.ssh'.
No protocol specified

(ssh-askpass:12210): Gtk-WARNING **: cannot open display: :0.0
Host key verification failed.

Je suis aller dans le fichier /etc/passwd et j'ai donc constater que le nonexistant est pour la personne nobody

Donc ma question ^^
Pourquoi y a t il un problème avec nobody ? je ne suis pas censé me connecter avec le login entré dans la commande ssh ? (ce qui se passe lorsque je ne passe pas par PHP)

La clef a été ajoutée seulement dans /home/login/.ssh/authorized_keys, donc c'est normal que la vérification échoue..

Comment faire ?

chris_27
chris_27
Niveau 10
12 mai 2011 à 14:00:34

Une bonne idée pour ton exec serait de faire un "ssh -v" et de récupérer la sortie.

« (ssh-askpass:12210): Gtk-WARNING **: cannot open display: :0.0 » :d) ça pue ce truc. ssh n'a pas besoin d'ouvrir une pop-up pour demander un mot de passe. :malade:
Essaie de mettre le path complet vers le binaire ssh juste après ton exec, et assure toi que c'est le vrai binaire de ssh et pas une version modifiée spéciale à "php" (= l'utilisateur système correspondant à php).

kiri_le_clown
kiri_le_clown
Niveau 9
12 mai 2011 à 14:46:06

En rajoutant l'option -v j'obtient le retour dans le log des erreurs

OpenSSH_5.3p1 Debian-3ubuntu6, OpenSSL 0.9.8k 25 Mar 2009
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: Connecting to <IP>[<IP>] port 22.
debug1: Connection established.
debug1: identity file /<chemin>/ssh_key type 2
debug1: Checking blacklist file /usr/share/ssh/blacklist.DSA-1024
debug1: Checking blacklist file /etc/ssh/blacklist.DSA-1024
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3p1 Debian-3ubuntu6
debug1: match: OpenSSH_5.3p1 Debian-3ubuntu6 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.3p1 Debian-3ubuntu6
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
:d) debug1: read_passphrase: can't open /dev/tty: No such device or address
debug1: permanently_drop_suid: 65534

No protocol specified
(ssh-askpass:23727): Gtk-WARNING **: cannot open display: :0.0
Host key verification failed.

Le problème est visiblement lié à la passphrase, la connexion a bien lieu.
Voilà donc pourquoi (enfin je crois ^^) ssh essaie d'ouvrir un pop-up.

Pour la configuration des clefs, je n'ai justement pas mis de passphrase pour ne pas à avoir ce problème.

Que faire ? :question:

kiri_le_clown
kiri_le_clown
Niveau 9
12 mai 2011 à 15:08:31

J'ai oublié dans ce log il n'y a pas d'autres erreurs car j'ai modifié dasn /etc/passwd le chemin de nobody.

(A terme j'aimerai pouvoir me connecter avec un autre login, celui que j'entre dans la commande)

Le log sans modification de /etc/passwd donne :

OpenSSH_5.3p1 Debian-3ubuntu6, OpenSSL 0.9.8k 25 Mar 2009
debug1: Reading configuration data /etc/ssh/ssh_config

debug1: Applying options for *

debug1: Connecting to <IP>[<IP>] port 22.

debug1: Connection established.

Could not create directory '/nonexistant/.ssh'.

debug1: identity file /<chemin>/ssh_key type 2

debug1: Checking blacklist file /usr/share/ssh/blacklist.DSA-1024

debug1: Checking blacklist file /etc/ssh/blacklist.DSA-1024

debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3p1 Debian-3ubuntu6

debug1: match: OpenSSH_5.3p1 Debian-3ubuntu6 pat OpenSSH*

debug1: Enabling compatibility mode for protocol 2.0

debug1: Local version string SSH-2.0-OpenSSH_5.3p1 Debian-3ubuntu6

debug1: SSH2_MSG_KEXINIT sent

debug1: SSH2_MSG_KEXINIT received

debug1: kex: server->client aes128-ctr hmac-md5 none

debug1: kex: client->server aes128-ctr hmac-md5 none

debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent

debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP

debug1: SSH2_MSG_KEX_DH_GEX_INIT sent

debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY

debug1: read_passphrase: can't open /dev/tty: No such device or address

debug1: permanently_drop_suid: 65534

No protocol specified

(ssh-askpass:24088): Gtk-WARNING **: cannot open display: :0.0
Host key verification failed.

chris_27
chris_27
Niveau 10
12 mai 2011 à 18:46:13

« car j'ai modifié dasn /etc/passwd le chemin de nobody. » :d) tu es sûr/conscient de ce que tu as fait ? :doute:

Par ailleurs, il est grand temps de me dire ce que tu as le droit de faire sur le serveur (cible du ssh) et sur le client (celui où tu joues avec PHP).

kiri_le_clown
kiri_le_clown
Niveau 9
13 mai 2011 à 09:05:29

La modification pour nobody je l'ai faite juste pour voir si ça bloquerait ^^ (j'ai remis à la normal depuis) je ne suis pas encore fou :p

En fait, mon client doit se connecter sur le serveur pour récupérer une liste de fichier, c'est le seul intérêt à cette connexion en SSH.

kiri_le_clown
kiri_le_clown
Niveau 9
13 mai 2011 à 10:15:15

Ça y est, j'ai trouvé... :hum:
Il y avait une erreur dans le fichier "httpd.conf", l'utilisateur ne pouvait exécuter la commande SSH, j'ai donc modifié cet utilisateur tout marche, plus d'erreur :)

Merci pour ton aide / patience Chris_27 :)

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment