SSH — сетевой протокол, разработанный в 1995 году с целью установления стабильного и безопасного соединения с удаленными серверами. В наши дни технология получила наибольшее распространение при работе с VPS/VDS и выделенными серверами. Благодаря передаче данных по защищенным криптографическими методами каналам достигается беспрецедентно высокий уровень информационной безопасности.
Для дистанционного управления сервером, работы с текстовыми файлами, медиа-материалами и другими форматами администраторы используют специальные SSH-клиенты и ряд команд. Для чего нужны SSH-команды, какие они бывают и как ими пользоваться — разберем в этой статье.
SSH-команды: объясняем простыми словами
Для лучшего понимания термина представим отвлеченную ситуацию: вы живете в Москве, а у вашего заказчика из Екатеринбурга «полетел» интернет-магазин, размещенный на локальном сервере. Вариантов дальнейшего развития ситуации может быть несколько:
- Вы всё бросайте и ближайшим рейсом вылетаете в другой город, чтобы решить проблему на месте.
- Или же отбрасываете в сторону эмоции, удаленно подключаетесь к серверу по SSH, находите и устраняете ошибки, не покидая удобного кресла в московском бизнес-центре.
Отправка команд и пакетов данных выполняется по защищенному SSH-протоколу.
Если с удаленным сервером или ПК удастся связаться таким образом, это можно сравнить с тем, словно вы подсоединили к нему свою клавиатуру. С этого момента можно запускать и выполнять на нём различные программы, проводить любые операции и действия, предусмотренные командной строкой.
Что можно делать с помощью SSH-команд
Команды по SSH можно использовать для:
- настройки серверного оборудования;
- программирования;
- установки WordPress, Bitrix, OpenCart и других CMS;
- выявления и устранения ошибок на сайте;
- запуска и остановки ПО, в том числе зависшего;
- копирования, вставки и перемещения файлов;
- настройки параметров безопасности ПК и файлов;
- перезагрузки сервера;
- удаления списка файлов, форматирования жесткого диска;
- дистанционного запуска файлов.
Конечно, этот список далеко не полный, но позволяет оценить открывающиеся возможности по удаленной работе с сервером.
Кратко о подключении и работе по SSH
Взаимодействие с виртуальными и выделенными серверами по SSH-протоколу выполняется в несколько этапов с помощью достаточно простых команд. Рассмотрим их более детально.
Запуск SSH-клиента
Если вы используйте MacOS, Linux или другие Unix-системы, значит, ничего скачивать и устанавливать не нужно — у этих ОС уже есть SSH-клиент (Terminal). Чтобы его запустить, нажмите Ctrl+Alt+T.
Далее для подключения к удаленному серверу введите в командную строку команду:
ssh root@11.44.45.66
Где:
- root — имя суперпользователя (чаще всего подключаются через этот аккаунту). Если вы используете другое имя пользователя, впишите его вместо рута.
- 11.44.45.66 — IP-адрес удаленного сервера.
По умолчанию для подключения по SSH-протоколу используется 22-й порт. Порт — это что-то типа номера рейсового автобуса, курсирующего по маршруту. И все вокруг уже знают, что «попасть» на остановку SSH можно на автобусе-порте под номером 22. Но, всё течет, всё меняется, и иногда на маршрут вместо привычного автобуса выходит, например, маршрутка №320.
Так и стандартный 22-й порт можно заменить на другой, что ещё больше обезопасит подключение. Для этого используется команда:
ssh -p номер_порта имя_пользователя@IP_сервера
У ОС Windows собственного SSH-клиента нет, его придется скачивать дополнительно. Одним из самых популярных вариантов является PuTTY с графической оболочкой, рассчитанной на более удобную и простую настройку параметров удаленного соединения.
SSH-соединение
Установление соединения выполняется в соответствии со следующим алгоритмом:
- SSH-клиент запрашивает подключение к серверу.
- Участники соединения проводят взаимную идентификацию, решают вопросы относительно используемых протоколов шифрования.
- Создается защищенный и стабильно функционирующий канал отправки команд.
В роли сервера в рамках SSH-подключения могут выступать в том числе удаленные компьютеры или ноутбуки.
Обмен ключами шифрования
После запуска SSH-клиента:
- Удаленный сервер направляет клиенту перечень протоколов шифрования, с которыми он готов работать.
- Если клиент также готов работать с этими протоколами, между ним и сервером криптографическими инструментами создается защищенное и надежное соединение. Внести в него изменения или взломать практически невозможно.
- Каждая сторона подключения получает специальный ключ, с помощью которого производится шифрование и дешифрование команд.
Если подключение прошло в штатном режиме, при первом сеансе связи сервер попросит подтвердить соединение:
Are you sure you want to continue connecting (yes/no)?
Завершаем операцию и вводим yes. Таким образом, мы выполнили уникальное подключение. В дальнейшем при изменении настроек и/или параметров работы соединения его участники поймут, что что-то идет не так и нужно бить тревогу.
В дальнейшем можно скопировать ключ на сервер, что позволит получать к нему доступ без ввода логина и пароля. Сделать это можно так:
ssh-copy-id -i путь_до_ключа root@IP_сервера
Фактически на этом всё. Защищенное соединение по SSH-протоколу установлено. Теперь вы можете без каких-либо проблем управлять удаленным сервером практически из любой точки планеты.
Root-доступ
По умолчанию при использовании SSH root-доступ разрешен, однако такой подход ставит под угрозу безопасность соединения. Поэтому после подключения рекомендуется раскомментировать строчку:
PermitRootLogin no
Дополнительно, чтобы разрешить доступ только определенным пользователям (одному или нескольким), воспользуйтесь следующей командой:
AllowUsers User1, User2, User3
Где User 1, 2, 3 — это пользователи, которым разрешен доступ.
Список SSH-команд и основы работы с командной строкой
Разберем основные команды и базовые навыки для работы по SSH-протоколу.
Командная строка, горячие клавиши и дополнительные символы
При подключении к удаленному серверу посредством SSH вы не увидите привычный для большинства пользователей рабочий стол или графический интерфейс с различными кнопками. Перед вами окажется черный экран с текстовыми строками. Именно он и называется командной строкой, которая является текстовым интерфейсом ПО.
Для взаимодействия с утилитой необходимо прописать определенную команду SSH в командную строку в виде текста, а программа выполнит поставленные перед ней задачи.
Помимо команд допускается использование дополнительных символов:
- ; — выполняет функцию разделителя, позволяющего прописывать и активировать сразу несколько команд:
cd ~/Documents; mkdir Pervaya_papka
- && — еще один разделитель. От предыдущего его отличает один важный момент — запуск команд, разделенных &&, осуществляется последовательно, при этом новая команда выполняется, только если успешно завершилась предыдущая:
cd ~/Documents && mkdir Pervaya_papka
- | — одновременно запускает две разные команды.
- ~ — символ является сокращенным написанием /home/имя_учетной_записи/.
Также упростить работу с SSH в консоли можно с помощью горячих клавиш:
- ↑ — открывает выполненную ранее команду;
- Ctrl+C — останавливает запущенный процесс;
- Ctrl+D — аналогична Ctrl+C, только интерпритируется как желание выйти из программы;
- Ctrl+A — отправляет курсор в начало текущей строки;
- Ctrl+E — отправляет курсор в конец текущей строки;
- Ctrl+W — удалить слово в текущей строчке;
- Ctrl+U — удалить всю строчку;
- Ctrl+Shift+C — копировать;
- Ctrl+Shift+V — вставить.
Базовые команды
Рассмотрим наиболее часто используемые SSH-команды:
- sudo — выдаёт права суперпользователя на использование последующей команды, если её нужно выполнить от имени администратора.
- Is — отображает содержимое вокруг вас, то есть все директории и файлы. При этом не обязательно переходить в интересующую папку, можно указать её путь:
ls ~/Desktop/adminvps
- cd — используется для перехода в любую выбранную папку:
cd ~/Desktop/ctomserver
- mkdir — позволяет создавать новую папку:
mkdir ~/Desktop/shared_hosting
- rm — команда для удаления папок и их содержимого (документов, медиа, фото) без возможности восстановления:
rm ~/Desktop/trash
- cp — применяется для создания копии указанного файла в выбранном каталоге:
cp ~/Documents/adminvps.txt /home/adminvps/Desktop/important
- mv — команда для перемещения файлов:
mv ~/Desktop/adminvps.txt ~/Documents
Также может использоваться для переименования файла:mv ~/Desktop/adminvps.txt adminvps-42.txt
- find — поиск файлов и папок в файловой системе по типу или названию. Например, такая команда будет искать папки с именем adminvps:
find -type d -name adminvps
- history — по умолчанию отображает 10 последних использованных инструментов или приложений. Чтобы изменить это количество любое число:
history 20
- clear — удаляет из текущей сессии консоли все ранее введенные данные, историю выполненных команд, а также содержимое открытых файлов.
Команды для работы с папками и файлами
- ls -lia — отобразит перечень содержимого каталого (всех файлов и папок, в том числе скрытых) в алфавитном порядке с указанием текущего размера.
- pwd — отобразит полный путь до текущей папки.
- cd / && du -hs * — полезная команда, если нужно быстро очистить забитый до отказа жесткий диск, используется для поиска директории с самым большим количеством файлов.
- df — показывает объем свободного дискового пространства сервера.
- cp -r Papka1 Papka 2 — скопирует первую папку вместе со всем содержимым во вторую директорию.
- du -sh — отобразит, сколько места занимает текущая папка и её подпапки.
- du -sh* — показывает, сколько весит каждый файл в текущей папке.
- touch — создаёт файл заданного формата в выбранной директории:
touch ~/Desktop/adminvps.txt
- fsck -y — автопроверка с последующим исправлением ошибок файловой системы.
Команды для работы с архивами
- tar cf Archive.tar adminvps.txt — создать архив в формате .tar, содержащий указанный файл.
- tar xf Archive.tar — выполнить распаковку архива.
- tar czf Archive.tar.gz adminvps.txt — создать архив с использованием сжатия Gzip.
- tar xzf Archive.tar.gz — распаковать такой архив.
- gzip adminvps.txt— сжать документ.
- zip -r Archive.zip /home/adminvps/Desktop/Papka/ — добавить в архив содержимое указанной директории.
- unzip — распакует архив (синтаксис строится по такому же принципу).
Команды для управления процессами
- ps -e — отображает на экране все активные в настоящий момент процессы.
- top — выводит запущенные пользователем процессы с информацией о нагрузке каждого на процессор, занимаемой оперативной памяти, времени работы. Чем-то похожа на диспетчер задач в Windows.
- kill PID — достаточно специфическая команда, позволяющая завершить текущий процесс с заданным PID-кодом (вместо PID вводится число).
- killall — позволяет завершить процесс, зная только его название. PID-код здесь не нужен.
- bg — выводит на экран перечень остановленных и фоновых задач.
- fg — отображает последние задачи.
Команды для работы с системной информацией
- reboot либо shutdown -r — выполняет перезагрузку сервера.
- free — выводит информацию об использовании оперативной памяти (сколько занято и сколько свободно);
- vmstat — отображает информацию о памяти, процессах, степени загрузки процессора и многом другом. Позволяет мониторить состояние и производительность сервера.
- uptime — функциональная и часто используемая системными администраторами команда, показывающая время беспрерывной работы сервера без перезагрузки.
- date — сегодняшняя дата.
- cal — команда выводит на экран календарь на текущий месяц.
- cat /proc/cpuinfo или meminfo — показывает характеристики процессоре или оперативной памяти соответственно.
Команды для работы с сетевыми настройками
- ifconfig — отображает текущие сетевые интерфейсы.
- ifconfig -a — позволяет получить доступ к полному списку интерфейсов, в том числе к тем, которые не активны в настоящий момент.
- ifconfig eth1 down — отключает интерфейс eth1.
- ifconfig eth1 up — включает интерфейс eth1.
- ping adminvps.ru — пинг указанного сайта, проверка соединения в сетях TCP/IP.
- dig adminvps.ru — отображает информацию о DNS-серверах сайта.
- wgеt адрес_ссылки — позволяет скачать файл по указанному адресу. Можно указывать сразу несколько URL-адресов.
- wgеt -c адрес_ссылки — продолжает остановленное скачивание.
Команды для разграничения прав доступа
- chown — нужная команда, которая позволяет назначить владельца для папок и любых файлов системе:
chown adminVPS (имя учетной записи) ~/Desktop/file.jpg
- chmod — используется для смены прав доступа к папке или файлу. Например, для назначения прав на чтение и перезапись файла:
chmod 777 ~/Desktop/photo22.png
Подводим итоги
С помощью SSH-команд вы можете удаленно работать с любыми файлами, настраивать сетевые функции и параметры работы сервера и многое другое. В любом случае, SSH-соединение отличается предельно простым и лаконичным интерфейсом и высокой безопасностью передачи любых видов данных.