Как установить ssh2 модуль для php на ubuntu

Обновлено: 02.07.2024

ssh2:// — Secure Shell 2

Описание

ssh2.shell:// ssh2.exec:// ssh2.tunnel:// ssh2.sftp:// ssh2.scp:// (PECL)

Замечание: Эта обёртка не включена по умолчанию
Для того, чтобы использовать обёртки ssh2.*:// вам необходимо установить модуль » SSH2, доступный в репозитории » PECL.

Кроме получения традиционных данных для входа к URI, обёртки ssh2 также будут повторно использовать открытые соединения, передавая ресурс соединения в хост-часть URL.

Использование

Опции

Основная информация
Атрибут ssh2.shell ssh2.exec ssh2.tunnel ssh2.sftp ssh2.scp
Ограничение по allow_url_fopen Да Да Да Да Да
Чтение Да Да Да Да Да
Запись Да Да Да Да Нет
Добавление Нет Нет Нет Да (когда поддерживается сервером) Нет
Одновременная чтение и запись Да Да Да Да Нет
Поддержка stat() Нет Нет Нет Да Нет
Поддержка unlink() Нет Нет Нет Да Нет
Поддержка rename() Нет Нет Нет Да Нет
Поддержка mkdir() Нет Нет Нет Да Нет
Поддержка rmdir() Нет Нет Нет Да Нет

Опции контекста
Имя Использование По умолчанию
session Предварительно соединённый ресурс ssh2 для повторного использования
sftp Предварительно выделенный ресурс sftp для повторного использования
methods Обмен ключами, ключ хоста, шифр, компрессия и методы MAC для использования
callbacks
username Имя пользователя для соединения
password Пароль для аутентификации
pubkey_file Имя файла, в котором находится открытый ключ для аутентификации
privkey_file Имя файла, в котором находится приватный ключ для аутентификации
env Ассоциативный массив с переменными окружения, которые необходимо установить
term Тип эмуляции терминала для запроса, когда выделяется pty
term_width Ширина терминала, запрашивается когда выделяется pty
term_height Высота терминала, запрашивается когда выделяется pty
term_units Единицы, в которых измеряются term_width и term_height SSH2_TERM_UNIT_CHARS

Примеры

<?php
$session = ssh2_connect ( 'example.com' , 22 );
ssh2_auth_pubkey_file ( $session , 'username' , '/home/username/.ssh/id_rsa.pub' ,
'/home/username/.ssh/id_rsa' , 'secret' );
$stream = fopen ( "ssh2.tunnel:// $session /remote.example.com:1234" , 'r' );
?>

Если вы хотите использовать какую-либо из обёрток ssh2.*://$session , необходимо сохранить доступным ресурс, хранящийся в переменной $session . Следующий код не будет иметь желаемого эффекта:

<?php
$session = ssh2_connect ( 'example.com' , 22 );
ssh2_auth_pubkey_file ( $session , 'username' , '/home/username/.ssh/id_rsa.pub' ,
'/home/username/.ssh/id_rsa' , 'secret' );
$connection_string = "ssh2.sftp:// $session /" ;
unset( $session );
$stream = fopen ( $connection_string . "path/to/file" , 'r' );
?>

unset() закрывает сессию, потому что $connection_string не является ссылкой на переменную $session , а только её текстовым представлением. Это также происходит и в случае неявного вызова unset() при выходе из области видимости (например, из функции).

ssh2:// — Secure Shell 2

Описание

ssh2.shell:// ssh2.exec:// ssh2.tunnel:// ssh2.sftp:// ssh2.scp:// (PECL)

Замечание: Эта обёртка не включена по умолчанию
Для того, чтобы использовать обёртки ssh2.*:// вам необходимо установить модуль » SSH2, доступный в репозитории » PECL.

Кроме получения традиционных данных для входа к URI, обёртки ssh2 также будут повторно использовать открытые соединения, передавая ресурс соединения в хост-часть URL.

Использование

Опции

Основная информация
Атрибут ssh2.shell ssh2.exec ssh2.tunnel ssh2.sftp ssh2.scp
Ограничение по allow_url_fopen Да Да Да Да Да
Чтение Да Да Да Да Да
Запись Да Да Да Да Нет
Добавление Нет Нет Нет Да (когда поддерживается сервером) Нет
Одновременная чтение и запись Да Да Да Да Нет
Поддержка stat() Нет Нет Нет Да Нет
Поддержка unlink() Нет Нет Нет Да Нет
Поддержка rename() Нет Нет Нет Да Нет
Поддержка mkdir() Нет Нет Нет Да Нет
Поддержка rmdir() Нет Нет Нет Да Нет

Опции контекста
Имя Использование По умолчанию
session Предварительно соединённый ресурс ssh2 для повторного использования
sftp Предварительно выделенный ресурс sftp для повторного использования
methods Обмен ключами, ключ хоста, шифр, компрессия и методы MAC для использования
callbacks
username Имя пользователя для соединения
password Пароль для аутентификации
pubkey_file Имя файла, в котором находится открытый ключ для аутентификации
privkey_file Имя файла, в котором находится приватный ключ для аутентификации
env Ассоциативный массив с переменными окружения, которые необходимо установить
term Тип эмуляции терминала для запроса, когда выделяется pty
term_width Ширина терминала, запрашивается когда выделяется pty
term_height Высота терминала, запрашивается когда выделяется pty
term_units Единицы, в которых измеряются term_width и term_height SSH2_TERM_UNIT_CHARS

Примеры

<?php
$session = ssh2_connect ( 'example.com' , 22 );
ssh2_auth_pubkey_file ( $session , 'username' , '/home/username/.ssh/id_rsa.pub' ,
'/home/username/.ssh/id_rsa' , 'secret' );
$stream = fopen ( "ssh2.tunnel:// $session /remote.example.com:1234" , 'r' );
?>

Если вы хотите использовать какую-либо из обёрток ssh2.*://$session , необходимо сохранить доступным ресурс, хранящийся в переменной $session . Следующий код не будет иметь желаемого эффекта:

<?php
$session = ssh2_connect ( 'example.com' , 22 );
ssh2_auth_pubkey_file ( $session , 'username' , '/home/username/.ssh/id_rsa.pub' ,
'/home/username/.ssh/id_rsa' , 'secret' );
$connection_string = "ssh2.sftp:// $session /" ;
unset( $session );
$stream = fopen ( $connection_string . "path/to/file" , 'r' );
?>

unset() закрывает сессию, потому что $connection_string не является ссылкой на переменную $session , а только её текстовым представлением. Это также происходит и в случае неявного вызова unset() при выходе из области видимости (например, из функции).

Довольно часто может понадобиться получить доступ к удаленному компьютеру или серверу через интернет. В персслучае сональным компьютером, это может понадобиться для срочного решения какой-либо проблемы, а в случае с сервером это вообще очень распространенная практика. В Linux наиболее часто для решения таких задач используется протокол SSH.

Служба SSH позволяет получить доступ к терминалу удаленного компьютера и выполнить там все необходимые вам команды. При своей простоте она достаточно безопасна, чтобы использоваться для решения серьезных коммерческих задач, так и задач обычных пользователей. В этой статье мы рассмотрим как выполняется установка SSH в Ubuntu 20.04, а также поговорим о начальной настройке SSH сервера.

Что такое SSH?

SSH или Secure Shell - это протокол безопасного доступа из одного компьютера к другому по сети. У протокола SSH очень много возможностей. Вы можете создавать защищенные соединения между компьютерами, открывать командную строку на удаленном компьютере, запускать графические программы, передавать файлы и организовывать частные сети.

За поддержку протокола SSH в Linux отвечает набор программного обеспечения OpenSSH. Это открытая реализация этого протокола, которая предоставляет все необходимые возможности. В состав пакета OpenSSH входят утилиты для установки соединения, передачи файлов, а также сам ssh сервер.

Установка OpenSSH в Ubuntu

Установить SSH на Ubuntu будет очень просто, программа считается стандартной и используется почти везде. Хотя по умолчанию в дистрибутиве её нет, но зато она есть в официальных репозиториях.

Поэтому для установки откройте терминал с помощью сочетания клавиш Ctrl+Alt+T и выполните команду:

sudo apt install openssh-server

ssh

Будет загружено несколько пакетов, а когда установка ssh сервера Ubuntu завершится, программа будет готова к работе. Если вы хотите чтобы служба запускалась автоматически нужно добавить его в автозагрузку. Поэтому чтобы включить SSH в Ubuntu 20.04 выполните:

sudo systemctl enable sshd

ssh1

Если затем вы захотите удалить службу из автозагрузки, используйте команду disable:

sudo systemctl disable sshd

Что касается клиента ssh, то он уже установлен в системе по умолчанию. Сейчас вы можете попробовать подключиться к локальному ssh серверу просто набрав:

ssh3

В одной из предыдущих статей мы рассматривали что означает адрес 0.0.0.0, сейчас вы можете убедиться что в пределах этой машины он значит локальный адрес:

ssh2

Точно таким способом вы можете получить ssh доступ ubuntu к любому другому компьютеру из сети. Для этого достаточно указать вместо localhost его ip адрес и имя пользователя в таком формате:

$ ssh имя_пользователя @ ip_адрес

Настройка SSH в Ubuntu

С параметрами по умолчанию сервер SSH не очень безопасен поэтому перед тем, как программа будет готова к полноценному использованию ее нужно немного настроить. Все настройки сервера SSH хранятся в конфигурационном файле sshd_config, который находится в папке /etc/ssh.

Перед тем как вносить изменения в этот конфигурационный файл рекомендуется сделать его резервную копию, для этого можете использовать такую команду:

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.factory-defaults

Дальше вы можете перейти к настройке конфигурационного файла:

sudo vi /etc/ssh/sshd_config

Первым делом желательно сменить порт, на котором работает ssh, возможный злоумышленник не знал включен ли у вас этот сервис. Найдите в конфигурационном файле строчку Port и замените ее значение на любое число, например, Port 2222:

ssh4

По умолчанию вход от имени суперпользователя включен, рекомендуется отключить такую возможность. Для этого найдите строчку PermitRootLogin и замените ее значение на no:

ssh5

Чтобы разрешить аутентификацию по ключу, а не по паролю найдите строку PubkeyAuthentication и убедитесь, что ее значение yes.

ssh6

Как настроить авторизацию по ключу в SSH читайте здесь. После того как все настройки будут завершены, сохраните изменения нажав :w и перезапустите службу SSH:

sudo systemctl restart ssh

Более подробно про настройку и использование различных тонкостей ssh рассказано в статье как использовать ssh.

Если вы изменили порт, то при подключении в клиенте тоже нужно указать новый порт, так как по умолчанию будет использоваться 22, например:

ssh -p 2222 localhost

К тому же, если на компьютере установлен и настроен брандмауэр, то в нем тоже нужно разрешить доступ к новому порту ssh, для этого выполните:

sudo ufw allow 2222

Даже если служба ssh находится на порту по умолчанию, его тоже нужно открыть в брандмауэре если вы собираетесь подключаться к компьютеру через интернет:

sudo ufw allow 22

Настройка ssh Ubuntu 20.04 полностью завершена.

Выводы

Теперь, когда установка SSH в Ubuntu 20.04 завершена, вы можете получить удаленный доступ к своему компьютеру через интернет и быть уверенными что он находится в безопасности. Если у вас остались вопросы, спрашивайте в комментариях.

На завершение видео, где подробно рассказано о том, что такое SSH:

Как происходит установка SSH в Ubuntu можно найти множество материалов. Я же в своей статье опишу не просто установку но и небольшой обзор SSH клиентов. Для начала что такое SSH и для чего он нужен.

Установка SSH сервера в Ubuntu

Запустим терминал Ubuntu и сразу перейдем в режим суперпользователя, чтобы впоследствии не вводить постоянно sudo

Установим openssh

Данная команда установит openssh и openssh-sftp сервер со всеми необходимыми зависимостями. На данном этапе установка завершена, подключимся для проверки работы.

Узнать ip адрес для подключения к серверу
Подключение к Ubuntu по SSH

В терминале введем команду

При первом подключении необходимо добавить ip адрес в список доверенных хостов (написать yes и нажать Enter). После ввода пароля станет доступно удаленное управление Ubuntu.

В данном примере я рассмотрел подключение к Ubuntu по SSH с выключенным брандмауэром. В случае с включенным брандмауэром, необходимо открыть порт 22

SSH клиенты

Подключение по протоколу SSH происходит с помощью SSH клиентов, еще их называют терминалы. Приведу список бесплатных и не очень терминалов которыми сам пользуюсь.

Powershell

Встроенное в Windows средство для выполнения Powershell команд и не только. Также позволяет подключаться по SSH. Пожалуй единственный его плюс в том что он уже установлен в Windows 10. Интерфейс довольно прост без излишеств. В критичный момент его можно использовать для SSH. Но если у вас есть немного времени советую установить Windows Terminal. Он бесплатен, устанавливается через Microsoft Store.

Windows Terminal

Бесплатный терминал для работы с SSH, Powershell, cmd. Позволяет создавать несколько окон во вкладках. Имеет приятный внешний вид, позволяет менять шрифт, прозрачность и т.п. В качестве бесплатного очень неплохой терминал.

MobaXterm

Продвинутый терминал под Windows с возможностями сервера X11, вкладки сессий SSH, работа с SFTP, туннелирование и многое другое.
Версия Home Edition поставляется бесплатно для домашнего использования. Перечислю её ограничения в сравнении с платной версией: не более 12 одновременных SSH сессий, 2 SSH туннеля, 4 макроса, 360 секунд для TFTP, NFS и Cron.

Для работы удобнее всего последний, если вас не смущают его ограничения.

Видео по установке SSH в Ubuntu

Ниже мы рассмотрим установку модулей PHP на сервер с операционной системой Ubuntu или Debian.

Создание phpinfo-скрипта

В процессе установки модулей нам потребуется получать информацию о параметрах PHP на сервере, поэтому в первую очередь разместим скрипт phpinfo.php в директории сайта.

Для этого подключитесь к серверу по SSH и выполните следующие шаги:

1. Перейдите в директорию сайта:

2. Создайте файл phpinfo.php:

3. Добавьте в него следующее содержимое:

4. Сохраните изменения (нажмите Ctrl+x для выхода из nano, далее Y для сохранения изменений и Enter).

Установка модулей на примере imagick

Рассмотрим установку модулей php на примере модуля imagick.

1. Уточните имя пакета.

Если вы не уверены в точном названии пакета, можно воспользоваться командой ниже, указав часть названия пакета. Для PHP названия большинства библиотек будут начинаться с "php".

Вывод команды выглядит примерно следующим образом:


В данном случае нам будет нужен пакет php-imagick.

2. Обновите информацию из репозиториев:

3. Установите библиотеку:


Перейдите в указанную директорию:

Проверьте, есть ли в ней установленная библиотека:

Если библиотека присутствует, она будет выведена в консоли:



Перейдите в указанную директорию и просмотрите ее содержимое:

Если конфигурационный файл с директивой, подключающей библиотеку, успешно создан, он будет выведен в консоли:


Если файл отсутствует, воспользуйтесь командой ниже, чтобы его создать:

Она создаст файл конфигурации imagick.ini в нужной директории и добавит в него директиву extension=imagick.so .

6. Перезагрузите веб-сервер Apache:


Подключение внешних библиотек

Если вам требуется подключить библиотеку, скачанную не из репозитория, необходимо:


2. Перейти в директорию с дополнительными конфигурационными файлами (см. значение параметра "Scan this dir for additional .ini files" на странице phpinfo.php; в нашем примере это /etc/php/7.2/apache2/conf.d):

3. Создать конфигурационный файл:

4. Указать в данном файле директиву и сохранить изменения:

5. Перезапустить Apache:

Если файл библиотеки был размещен в другой директории, то на шаге 4 необходимо в директиве extension указать соответствующий путь, например:

Читайте также: