Bonjour,

J'essaie d'utiliser l'exemple fourni dans la doc de ssh2_auth_hostbased_file mais sans succès.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$connection = ssh2_connect('ip.du.serveur', 22, array('hostkey'=>'ssh-rsa'));
echo 'connexion :<pre>';
print_r($connection);
echo '</pre>';
if (ssh2_auth_hostbased_file($connection, 'user_distant', 'localhost.localdomain',
                             '/var/www/.ssh/id_rsa.pub',
                             '/var/www/.ssh/id_rsa', '',
								'mon.user.local')) {
  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');
}
?>
Résultat :
connexion :

Resource id #2

Echec de l'identification en utilisant une clé d'hôte publique
En console, je me connecte sans problème à mon serveur avec ssh user_distant at ip.du.serveur et sans mot de passe puisque j'utilise la clé id_rsa de mon home.
Comme vous pouvez le voir, j'ai eu l'idée de copier le contenu de mon .ssh dans /var/www/.ssh de manière à ce que Apache n'ai pas de problème d'accès éventuel aux clés. J'avais essayé avant en indiquant le chemin vers /home/moi/.ssh mais le résultat était identique.

Quand je regarde le journal du serveur, :
- en me connectant en console, j'ai ça :
Accepted keyboard-interactive/pam for pef from [mon.ip.locale] port 32650 ssh2
- avec le programme php, j'ai ça :
Received disconnect from [mon.ip.locale] port 32651:11: PECL/ssh2 (http://pecl.php.net/packages/ssh2) [preauth]
=> Il n'y a pas de trace d'un échec de connexion, comme j'en ai de la part des robots pirates qui essaient d'entrer sur mon serveur :
pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=106.53.97.24 user=root
Failed password for root from 106.53.97.24 port 43544 ssh
Received disconnect from 106.53.97.24 port 43544:11: Bye Bye [preauth]
Disconnected from authenticating user root 106.53.97.24 port 43544 [preauth]
Il semble donc que le journal du serveur n'enregistre que l'action du die du programme php dans le else.

Qu'est-ce qui cloche avec l'exemple donné par la doc PHP ?