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 Ассоциативный массив с настройками шифрования, сжатия и метода имитовставки для сообщений в направлении сервер — клиент.  
* — Поддерживаемые значения зависят от методов, которые поддерживает базовая библиотека. Дополнительную информацию даёт » документация к 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
В библиотеке » libssh2, на базе которой работает PHP-модуль SSH2, поддержку значения none преднамеренно отключают по соображениям безопасности. Поддержку значения добавляют на этапе сборки: указывают в команде ./configure параметр, который включает поддержку значения. Дополнительную информацию даёт документация к базовой библиотеке.

callbacks

Параметр callbacks — ассоциативный массив, который содержит один или все следующие параметры:

Параметры callback-функции
Индекс Обозначение Прототип
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(
'Невозможно установить соединение');
}

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

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