connexion SFTP via SSH2

Ce sujet est résolu
Default
,

Bonjour,

Voila je rencontre un petit problème.

J'utilise une ligne de commande pour envoyer un fichier en SFTP depuis le serveur qui fonctionne

echo "put /var/www/vhosts/mon_fichier.zip /rep_dist/" | sftp -oHostKeyAlgorithms=+ssh-dss -oKexAlgorithms=+diffie-hellman-group1-sha1 -i /ro ot/id_dsa -oCheckHostIP=no -oPasswordAuthentication=no -oPubkeyAcceptedKeyTypes=+ssh-dss identifiant@mon_serveur.com

Hors les infos que j'ai volontairement retiré pour des raisons de sécurité, cette ligne fonctionne.
Du coup je dois intégrer l'envoi dans une application php. Je me dis donc que j'allais réutiliser cette commande en faisant comme ci-dessous

$cmd = 'echo "put ' . $file . ' '.$serverPath.'"| sudo sftp -oHostKeyAlgorithms=+ssh-dss -oKexAlgorithms=+diffi e-hellman-group1-sha1 -i /root/.ssh/id_dsa -oCheckHostIP=no -oPasswordAuthentication=no -oPubkeyAcceptedKeyTypes=+ssh -dss ' . $login . '@' . $serverLink;
$exec = shell_exec($cmd);

J'ai volontairement rajouté sudo avant sftp dans ma commande car lorsque je l'utilise sur mon serveur de test, je suis connecté en root.

Je ne sais pas si shell_exec() doit me retourner quelque chose sur la doc ça retourne une string mais là je ne sais pas trop mais ça me retourne null. Le fichier quant à lui n'a visiblement pas été envoyé. Je n'en suis pas certain car je n'ai pas accès au serveur en face. Je devrais logiquement recevoir un accusé de réception, sauf que là je n'ai rien.

Donc je souhaite prendre le problème autrement et j'ai regardé à utiliser les fonction ssh2 seulement vu les paramètres de connexion au serveur je ne suis pas certain d'y arriver. J'avance à l'aveugle mais c'est le client qui veut ça :(

3 Réponse

Default
,

Bonjour StephaneL35,

Merci d'avoir pris le temps de répondre à mon problème. J'ai enfin réussi à me connecter. J'ai eu plusieurs problèmes mais c'est réglé.
Il fallait faire attention à l'accès des fichiers id_dsa. Pour que ça fonctionne j'ai dû les copier pour les ajouter dans mon projet (je ne sais pas si c'est une bonne manière de faire, j'ai un doute :/).

Mon problème n'est pas tout à fait réglé mais je ne pourrais rien y faire. J'ai découvert que le serveur a quelques problèmes ce qui m'empêche de tester mon application correctement :(

Grosse boîte ne veut pas dire gros moyens ^^

Default
,

Bon j'ai un peu avancé mais ça ne fonctionne toujours pas ;/

$connection = ssh2_connect($serverLink, 22, [
            'hostkey' => 'ssh-dss',
            'kex' => 'diffie-hellman-group1-sha1'
        ]);

        if (ssh2_auth_hostbased_file($connection, $login, $serverLink,
            '/root/.ssh/id_dsa.pub',
            '/root/.ssh/id_dsa')) {
            echo "Identification en utilisant une clé d'hôte publique avec succès\n";
        } else {
            die('Echec de l\'identification en utilisant une clé d\'hôte publique avec succès');
        }

message d'erreur

Warning: ssh2_auth_hostbased_file(): Authentication failed for "$login" using hostbased public key
241786
,

Bonjour,

En utilisant une connexion via mot de passe en 'dur', est ce que tu as bien accès ?

$connection = ssh2_connect(...)
ssh2_auth_password($connection, $login, $password);
$sftp = ssh2_sftp($connection);