(PECL ssh2 >= 0.9.0)
ssh2_connect — Подключение к SSH-серверу
$host
,$port
= 22,$methods
= ?,$callbacks
= ?Устанавливает соединение с сервером по SSH.
После соединения, пользователь должен проверить ключ сервера, используя функцию ssh2_fingerprint(), и после этого авторизоваться, используя пароль или открытый ключ.
host
port
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.
Индекс | Что обозначает | Допустимые значения* |
---|---|---|
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
может быть ассоциативным массивом,
содержащим любой или же все нижеперечисленные параметры
Индекс | Что обозначает | Прототип |
---|---|---|
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('Не удалось установить соединение');
?>