ssh2_connect

(PECL ssh2 >= 0.9.0)

ssh2_connectПодключение к SSH-серверу

Описание

ssh2_connect(
    string $host,
    int $port = 22,
    array $methods = ?,
    array $callbacks = ?
): resource|false

Устанавливает соединение с сервером по SSH.

После соединения, пользователь должен проверить ключ сервера, используя функцию ssh2_fingerprint(), и после этого авторизоваться, используя пароль или открытый ключ.

Список параметров

host

port

methods

Параметр methods может быть ассоциативным массивом, содержащим до четырёх записей, перечисленных ниже.

Параметр methods может быть ассоциативным массивом, содержащим от одного до четырёх параметров
Индекс Что обозначает Допустимые значения*
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 Ассоциативный массив, содержащий настройки шифрования, сжатия и метода имитовставки ("message authentication code" или MAC) для сообщений, отправленных сервером клиенту.  

* - Поддерживаемые значения зависят от методов, поддерживаемых базовой библиотекой. Более подробно читайте документацию по » libssh2.

client_to_server и 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

В целях безопасности none отключён в базовой библиотеке » libssh2, если вы не разрешили его самостоятельно на этапе сборки, используя соответствующие ключи ./configure. Смотрите документацию по базовой библиотеки для более подробной информации.

callbacks

callbacks может быть ассоциативным массивом, содержащим любой или же все нижеперечисленные параметры

Параметры callback-функции
Индекс Что обозначает Прототип
ignore Имя функции, вызываемой после получения пакета SSH2_MSG_IGNORE void ignore_cb($message)
debug Имя функции, вызываемой после получения пакета SSH2_MSG_DEBUG void debug_cb($message, $language, $always_display)
macerror Имя функции, вызываемой если пакет получен, но MAC не удался. Если callback-функция вернёт true, несовпадение будет проигнорировано, в обратном случае соединение будет оборвано. 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('Не удалось установить соединение');
?>

Смотрите также

  • ssh2_fingerprint() - Получение отпечатка удалённого сервера
  • ssh2_auth_none() - Аутентификация как "none"
  • ssh2_auth_password() - Аутентификация через SSH с использованием обычного пароля
  • ssh2_auth_pubkey_file() - Аутентификация с открытым ключом
  • ssh2_disconnect() - Закрыть соединение с удалённым сервером SSH