Как установить ssh2 модуль для php на ubuntu
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 сервера Ubuntu завершится, программа будет готова к работе. Если вы хотите чтобы служба запускалась автоматически нужно добавить его в автозагрузку. Поэтому чтобы включить SSH в Ubuntu 20.04 выполните:
sudo systemctl enable sshd
Если затем вы захотите удалить службу из автозагрузки, используйте команду disable:
sudo systemctl disable sshd
Что касается клиента ssh, то он уже установлен в системе по умолчанию. Сейчас вы можете попробовать подключиться к локальному ssh серверу просто набрав:
В одной из предыдущих статей мы рассматривали что означает адрес 0.0.0.0, сейчас вы можете убедиться что в пределах этой машины он значит локальный адрес:
Точно таким способом вы можете получить 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:
По умолчанию вход от имени суперпользователя включен, рекомендуется отключить такую возможность. Для этого найдите строчку PermitRootLogin и замените ее значение на no:
Чтобы разрешить аутентификацию по ключу, а не по паролю найдите строку PubkeyAuthentication и убедитесь, что ее значение yes.
Как настроить авторизацию по ключу в 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 указать соответствующий путь, например:
Читайте также: