(PECL ssh2 >= 0.9.0)
ssh2_connect — Подключается к серверу по протоколу SSH
$host,$port = 22,$methods = ?,$callbacks = ?Функция устанавливает соединение с сервером по протоколу SSH.
После установки соединения клиенту потребуется проверить ключ хоста сервера функцией ssh2_fingerprint(), а затем пройти аутентификацию по паролю или открытому ключу.
hostportmethodsmethods — ассоциативный массив,
который содержит одно или все следующие значения.
| Индекс | Обозначение | Допустимые значения* |
|---|---|---|
| kex | Список значений для объявления способов обмена ключами. Значения разделяют запятой и указывают в порядке убывания приоритета. |
diffie-hellman-group1-sha1,
diffie-hellman-group14-sha1
и diffie-hellman-group-exchange-sha1
|
| hostkey | Список значений для объявления методов проверки подлинности ключей хоста. Значения разделяют запятой и указывают в порядке убывания приоритета. |
ssh-rsa
и ssh-dss
|
| client_to_server | Ассоциативный массив с настройками шифрования, сжатия и метода имитовставки (Англ. Message Authentication Code, сокр. MAC) для сообщений в направлении клиент — сервер. | |
| server_to_client | Ассоциативный массив с настройками шифрования, сжатия и метода имитовставки для сообщений в направлении сервер — клиент. |
| Индекс | Обозначение | Допустимые значения* |
|---|---|---|
| crypt | Список значений для объявления методов шифрования. Значения разделяют запятой и указывают в порядке убывания приоритета. |
rijndael-cbc@lysator.liu.se,
aes256-cbc,
aes192-cbc,
aes128-cbc,
3des-cbc,
blowfish-cbc,
cast128-cbc,
arcfour
и none**
|
| comp | Список методов для объявления способов сжатия. Значения разделяют запятой и указывают в порядке убывания приоритета. |
zlib
и none
|
| mac | Список методов для объявления способа вычисления MAC. Значения разделяют запятой и указывают в порядке убывания приоритета. |
hmac-sha1,
hmac-sha1-96,
hmac-ripemd160,
hmac-ripemd160@openssh.com
и none**
|
Замечание: Значение "
none" вместо алгоритма шифрования и способа вычисления MAC
В библиотеке » libssh2, на базе которой работает PHP-модуль SSH2, поддержку значенияnoneпреднамеренно отключают по соображениям безопасности. Поддержку значения добавляют на этапе сборки: указывают в команде ./configure параметр, который включает поддержку значения. Дополнительную информацию даёт документация к базовой библиотеке.
callbacks
Параметр callbacks — ассоциативный массив,
который содержит один или все следующие параметры:
| Индекс | Обозначение | Прототип |
|---|---|---|
| ignore |
Название функции для вызова при получении пакета
SSH2_MSG_IGNORE
|
void ignore_cb($message) |
| debug |
Название функции для вызова при получении пакета
SSH2_MSG_DEBUG
|
void debug_cb($message, $language, $always_display) |
| macerror |
Название функции для вызова при получении пакета
с неправильным кодом аутентификации сообщения (англ. Message Authentication Code, сокр. MAC).
При возврате из callback-функции значения true несоответствие MAC игнорируется,
иначе соединение обрывается.
|
bool macerror_cb($packet) |
| disconnect |
Название функции для вызова при получении пакета
SSH2_MSG_DISCONNECT
|
void disconnect_cb($reason, $message, $language) |
Функция возвращает ресурс, если выполнилась успешно, или false, если возникла ошибка.
Пример #1 Пример установки соединения функцией ssh2_connect()
Пример открывает соединение со следующими настройками: при отправке шифровать пакеты по алгоритму 3DES-CBC, принимать пакеты с AES-шифром произвольной стойкости, не применять сжатие в обоих направлениях и обмениваться ключами по спецификации Group1.
<?php
/* Уведомляет пользователя о разрыве соединения сервером */
function my_ssh_disconnect($reason, $message, $language)
{
printf(
"Сервер отключился с кодом причины [%d] и сообщением: %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('Невозможно установить соединение');
}