Приручаем SSH. Основные команды и использование

Комментариев: 0
5 мин.
Добавить в закладки

Как вы работаете с сервером в настоящий момент? Только через панель управления хостера и 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.sql
pg_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

Приручаем SSH. Основные команды и использование

Подписаться
Уведомить о
guest
0 комментариев