(PECL ssh2 >= 0.9.0)
ssh2_connect — Connexion à un serveur SSH
$host
[, int $port
= 22
[, array $methods
[, array $callbacks
]]] )Établit une connexion à un serveur SSH distant.
Une fois connecté, le client doit vérifier la clé hôte du serveur en utilisant la fonction ssh2_fingerprint(), puis s'identifier en utilisant soit un mot de passe, soit une clé publique.
host
port
methods
methods
doit être un tableau associatif avec plus de
quatre paramètres, comme décrit ci-dessous. methods
peut contenir n'importe quel ou tous les paramètres suivants.
Index | Signification | Valeurs 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 chiffrement, 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 chiffrement, 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.
Index | Signification | Valeurs supportées * |
---|---|---|
crypt | Liste des méthodes de chiffrement à 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** |
Note: Chiffrement et méthode MAC "none"
Pour des raisons de sécurité, none est désactivé par la bibliothèque » libssh2 à moins qu'il soit activé explicitement durant la compilation en utilisant les options appropriées du ./configure. Voir la documentation sur la bibliothèque pour plus d'informations.
callbacks
callbackss
doit être un tableau associatif
contenant n'importe quel ou tous les paramètres suivants.
Index | Signification | Prototype |
---|---|---|
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 la fonction de rappel
retourne TRUE , l'erreur sera ignorée, 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) |
Retourne une ressource en cas de succès, ou FALSE
si une erreur survient.
Exemple #1 Exemple avec ssh2_connect()
Ouverture d'une connexion forçant 3des-cbc lors de l'envoi de paquets, n'importe quel chiffrement AES lors de la réception de paquets, aucune compression dans les deux directions, et un échange de clés Group1.
<?php
/* Notification à l'utilisateur si le serveur termine la connexion */
function my_ssh_disconnect($reason, $message, $language) {
printf("Server disconnected with reason code [%d] and 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('Échec de la connexion');
?>