Приручаем SSH. Основные команды и использование
Содержание поста
Как вы работаете с сервером в настоящий момент? Только через панель управления хостера и FTP? А может быть пользуетесь готовой панелью управления на VDS и знаете за SFTP?
Сегодня я хочу рассказать про SSH — сетевой протокол, который позволяет работать удаленно с операционной системой сервера через терминал. Есть конечно ПО для визуальной работы с SSH, но мы по хардкору. Как говорится: кто консоль не нюхал, тот в продакшн не пройдет. 👶
SSH (англ. Secure Shell — «безопасная оболочка») — сетевой протокол прикладного уровня, позволяющий производить удалённое управление операционной системой и туннелирование TCP-соединений (например, для передачи файлов). Схож по функциональности с протоколами Telnet и rlogin, но, в отличие от них, шифрует весь трафик, включая и передаваемые пароли. SSH допускает выбор различных алгоритмов шифрования. SSH-клиенты и SSH-серверы доступны для большинства сетевых операционных систем.
Источник: Википедия
🛑 Примечание: все команды должны выполняться в терминале. Для Windows можно использовать SSH-клиент PuTTY.
Подключение по SSH
Подключиться можно всего двумя вариантами: с паролем или без (через пары ключей).
Мы будем рассматривать аутентификацию с помощью пароля, как самый простой и быстрый вариант.
Итак, для подключения к серверу нужно:
- IP-адрес или название сервера
- логин и пароль пользователя, которому доступно подключение по SSH.
🛑 Обратите внимание: если вы используете обычный виртуальный хостинг, то у многих хостеров SSH-подключение отключено по умолчанию. Узнайте из документации вашего хостера как включить доступ по SSH-протоколу.
Подключиться можно с помощью простой команды:
ssh username@server
#server - это IP-адрес или название сервераПосле этого терминал запросит у вас пароль.
🛑 Обратите внимание: ввод пароля всегда скрыт в терминале, поэтому вы не увидите никаких символов (даже звездочек), но каждый символ фиксируется и функция вставки работает.
Если вы ввели правильный пароль, то перед приглашением к вводу (мигающая черточка, которая обозначает место для ввода команд) появится имя пользователя и IP-адрес/название сервера.
Поздравляю! Вы подключились к серверу по SSH. 🚀
Если вы новичок в работе с терминалом, перед дальнейшим чтением хочу порекомендовать вначале ознакомится с базовыми командами, которые можно использовать в терминале при любом режиме работы, а не только под SSH. Например, можете прочитать мою статью об основных командах для терминала.
Сеть и сервер
Запустить сервер Apache:
apachectl startsslОстановить сервер Apache:
apachectl stopПерезапустить сервер Apache:
apachectl restartЗапустить сервер nginx:
systemctl start nginx
# если используется EOLed-версия ОС
service nginx startОстановить сервер nginx:
systemctl stop nginx
# если используется EOLed-версия ОС
service nginx stopПерезапустить сервер nginx:
systemctl restart nginx
# если используется EOLed-версия ОС
service nginx restartПерезапустить MySQL:
/usr/local/etc/rc.d/mysql-server restartСоздать резервную копию выбранной базы данных MySQL:
mysqldump -u username -p password -D db_name < path/to/databaseИмпортировать выбранную базу данных MySQL в текущую:
mysql -u username -p password -D db_name < path/to/databaseПерезапустить PostgreSQL:
/etc/init.d/postgresql restartСоздать резервную копию выбранной базы данных MySQL:
pg_dump dbname > /tmp/dbname.sqlpg_restore -d dbname /tmp/dbname.bak
# восстановление определенной таблицы
pg_restore -a -t history /tmp/dbname.bak
# восстановление из архивного файла
pg_restore -Ft dbname.tarПоказать сколько пользователей вошли в систему, текущее время в часовом поясе сервера, аптайм сервера и как долго каждый из пользователей находится в системе:
wСкопировать файлы и папки:
# server - это IP-адрес или название сервера
# скопировать локальный файл на сервер
# 💻 👉 🖥
scp local_filename.txt username@server:path/to/server/folder/
# скопировать папку на сервере и все файлы в ней (рекурсивно) на свой компьютер
# 🖥 👉 💻
scp -r username@server:path/to/server/folder/ path/to/local/folder/
# скопировать папку на вашем компьютере и все файлы в ней (рекурсивно) на сервер
# 💻 👉 🖥
scp -r path/to/local/folder/ username@server:path/to/server/folder/
# скопировать папку и все файлы в ней (рекурсивно) между двумя серверами:
# 🖥 👉 🖥
scp -r username@server_one:path/to/server/folder/ username@server_two:path/to/server/folder/
# если вы хотите отображать прогресс копирования между серверами, можно использовать rsync
# для этого вначале подключаем по SSH к серверу на котором находятся файлы
ssh username@server
# и затем запускаем копирование с отображением прогресса
rsync -avz --progress -e ssh path/to/sourse-server/folder/ username@target-server:path/to/target-server/folder/Показать количество трафика, которое тратит каждый запущенный процесс:
nethogsПрава пользователей, директорий и файлов
Выполнить команду с правами администратора:
sudo command_nameПрименить права администратора ко всем последующим командам на некоторое время:
sudo suПрименить права администратора к предыдущей команде:
sudo !!Назначить владельца на директорию или файл:
chown username /path/to/folder/or/file/Назначить права на директории и файлы:
# права для отдельного файла
chmod 644 /path/to/file.txt
# права для отдельной директории
chmod 755 /path/to/folder/
# рекурсивное добавление прав на все файлы в директории
chmod -r 644 /path/to/folder/А теперь более конкретный пример. Для веб-проектов, нужно установить права 644 на файлы и права 755 на директории. Делать это вручную утомительно, поэтому можно поступить так:
# Делаем поиск по типу (директория или файл) и даем нужные права
# для директорий
find /path/to/folder -type d -exec chmod 755 {} \;
# для файлов
find /path/to/folder -type f -exec chmod 644 {} \;Системные утилиты
Показать сколько весит определенный файл:
du /path/to/file.txtПоказать сколько используется и сколько свободно оперативной памяти:
freeПоказать общий объем жестких дисков и свободного пространства:
df
# показать результат в мегабайтах
df -mПоказать подробную информацию о системе:
uname -aУстановка, обновление и удаление пакетов
Установка пакетов:
# Debian, Ubuntu и подобных
sudo apt-get install package_name
# Red Hat Linux, CentOS, Fedora
sudo dnf install package_name
# Arch Linux и Manjaro
sudo pacman -S package_nameУдаление пакетов:
# Debian, Ubuntu и подобных
sudo apt remove package_name
# Red Hat Linux, CentOS, Fedora
sudo dnf remove package_name
# Arch Linux и Manjaro
sudo pacman -R package_nameОбновление версий пакетов:
# Debian, Ubuntu и подобных
sudo apt-get update
# Red Hat Linux, CentOS, Fedora
sudo dnf upgrade
# Arch Linux и Manjaro
sudo pacman -Sy