Lorsque vous êtes en déplacement, et que vous avez besoin d'accéder à l'interface de votre Freebox Revolution, voici comment faire :
Prérequis :
- Avoir un PC allumé dans le même réseau que la Freebox
- Avoir l'IP de votre Freebox, ou par exemple un domaine en no-ip.biz
- Ouvrir le port 8080 sur votre Freebox et le rediriger sur le PC qui est allumé
- Ouvrir le port 22 (SSH) sur votre Freebox, et le rediriger sur votre PC allumé
Et on utilise cette commande :
ssh mondomaine.no-ip.biz -L 8080:localhost:80 -L 8081:mafreebox.freebox.fr:80
Ouvrez votre navigateur à l'adresse http://localhost:8081, vous devriez accéder à l'interface de votre Freebox !
Dans le cadre d'un développement Web, vous avez besoin de vous connecter et de réaliser certaines actions sur un autre serveur. L'ennui, c'est que ce serveur est accessible uniquement en SSH.
Pas de problème, on peut faire du SSH en PHP ! Avec la librairie PHP "SSH2", on va se connecter à un serveur, envoyer des commandes SSH, et même afficher ce qu'il nous renvoie ! Installez 3 paquets, et relancez le serveur Apache :
apt-get install libssh2-1 libssh2-1-dev libssh2-php
/etc/init.d/apache2 reload
Pour tester que SSH2 est bien installé, faites un php -m |grep ssh2. Si la console vous affiche bien "SSH2", c'est que la librairie est bien installée !
Le code PHP :
Voici une fonction PHP vous permettant d'envoyer une commande SSH :
function ssh($host, $login, $mdp, $command)
{
if (!function_exists("ssh2_connect")) die("function ssh2_connect doesn't exist");
if(!($con = ssh2_connect($host, 22))){
echo "échec connexion\n";
} else {
if(!ssh2_auth_password($con, $login, $mdp)) {
echo "échec authentification\n";
} else {
// execute a command
if (!($stream = ssh2_exec($con, $command ))) {
echo "échec de l'exécution de la commande\n";
} else {
// collect returning data from command
stream_set_blocking($stream, true);
$data = "";
while ($buf = fread($stream,4096)) {
$data .= $buf;
}
fclose($stream);
return $data;
}
}
}
}
Elle s'utilise comme cela :
$command = 'ls -alh /tmp';
$ret = ssh('monserveur', 'utilisateur', 'monmotdepassesecurise', $command);
echo '<pre>' . $ret . '</pre>';
Utilisez la variable $ret pour afficher ce que renvoie la commande SSH :) .
Si vous souhaitez passer plusieurs commandes dans la même instance SSH, utilisez le ";" comme séparateur. Les commandes seront alors exécutées à la suite :
ls -alh /tmp/; touch /tmp/truc
Si vous avez changé le port de SSH et que lors de l'administration de Zimbra vous avez cette erreur :
Mail : system failure: ZimbraLdapContext Code d'erreur : service.FAILURE Method: SearchDirectoryRequest Détails :soap:Receiver
Vérifiez dans la configuration de Zimbra que le nouveau port est bien pris en compte :
zmprov gs server.domain.com zimbraRemoteManagementPort
Si la valeur est toujours à 22, redéfinissez cette variable :
zmprov ms server.domain.com zimbraRemoteManagementPort 8022