ssh2_connect

(no version information, might be only in CVS)

ssh2_connect --  Connexion à un serveur SSH

Description

resource ssh2_connect ( string host [, int port [, array methods [, array callbacks]]] )

ssh2_connect() établie une connexion à un serveur SSH distant et retourne une ressource de connexion en cas de succès, FALSE sinon.

methods doit être un tableau associatif avec plus de quatre paramètres, comme décrit ci-dessous.

Tableau 1. methods doit être un tableau associatif avec n'importe quel ou tous les paramètres suivants.

IndexSignificationValeurs supportées *
kex La liste des méthodes d'échange à annoncer, séparées par une virgule, par ordre de préférence. diffie-hellman-group1-sha1, diffie-hellman-group14-sha1, et diffie-hellman-group-exchange-sha1
hostkey La liste des méthodes de clés d'hôte à annoncer, séparées par une virgule, par ordre de préférence. ssh-rsa et ssh-dss
client_to_server Tableau associatif contenant les codes des méthodes de cryptage, de compression et de messages d'identification (MAC) préférés pour l'envoi des messages depuis le client vers le serveur.  
server_to_client Tableau associatif contenant les codes des méthodes de cryptage, de compression et de messages d'identification (MAC) préférés pour l'envoi des messages depuis le serveur vers le client.  

* - Les valeurs supportées sont dépendantes des méthodes supportées par la bibliothèque. Voir la documentation libssh2 pour plus d'informations.

Tableau 2. client_to_server et server_to_client doivent être un tableau associatif avec n'importe quel ou tous les paramètres suivants.

IndexSignificationValeurs supportées *
crypt Liste des méthodes de cryptage à annoncer, séparées par une virgule, par ordre de préférence. rijndael-cbc@lysator.liu.se, aes256-cbc, aes192-cbc, aes128-cbc, 3des-cbc, blowfish-cbc, cast128-cbc, arcfour, et none**
comp Liste des méthodes de compression à annoncer, séparées par une virgule, par ordre de préférence. zlib et none
mac Liste des méthodes MAC à annoncer, séparées par une virgule, par ordre de préférence. hmac-sha1, hmac-sha1-96, hmac-ripemd160, hmac-ripemd160@openssh.com, et none**

Crypt and MAC method "none" : Pour des raisons de sécurité, none est désactivé par la bibliothèque libssh2 à moins qu'il soit activer explicitement durant la compilation en utilisant les options appropriées du ./configure. Voir la documentation sur la bibliothèque pour plus d'informations.

Tableau 3. callbackss doit être un tableau associatif contenant n'importe quel ou tous les paramètres suivants.

IndexSignificationPrototype
ignore Nom de la fonction à appeler lorsqu'un paquet SSH2_MSG_IGNORE est reçu void ignore_cb($message)
debug Nom de la fonction à appeler lorsqu'un paquet SSH2_MSG_DEBUG est reçu void debug_cb($message, $language, $always_display)
macerror Nom de la fonction à appeler lorsqu'un paquet est reçu mais que le code message d'identification échoue. Si le callback retourne TRUE, l'erreur sera ignoré, sinon, la connexion se terminera. bool macerror_cb($packet)
disconnect Nom de la fonction à appeler lorsqu'un paquet SSH2_MSG_DISCONNECT est reçu void disconnect_cb($reason, $message, $language)

Exemple 1. Ouverture d'une connexion forcant 3des-cbc lors de l'envoi de paquets, n'importe quel force aes cipher lors de la réception de paquets, aucune compression dans les deux directions, et change de clés Group1.

<?php
/* Notification à l'utilisateur si le serveur termine la connexion */
function my_ssh_disconnect($reason, $message, $language) {
  
printf("Le serveur s'est déconnecté avec le code [%d] et le message : %s\n",
         
$reason, $message);
}

$methods = array(
  
'kex' => 'diffie-hellman-group1-sha1',
  
'client_to_server' => array(
    
'crypt' => '3des-cbc',
    
'comp' => 'none'),
  
'server_to_client' => array(
    
'crypt' => 'aes256-cbc,aes192-cbc,aes128-cbc',
    
'comp' => 'none'));

$callbacks = array('disconnect' => 'my_ssh_disconnect');

$connection = ssh2_connect('shell.example.com', 22, $methods, $callbacks);
if (!
$connection) die('Echec de la connexion');
?>

Une fois connecté, le client doit vérifier la clé hôte du serveur en utilisant la fonctionssh2_fingerprint(), puis s'identifier en utilisant soit un mot de passe, soit une clé publique.

Voir aussi ssh2_fingerprint(), ssh2_auth_none(), ssh2_auth_password() et ssh2_auth_pubkey_file().