====== OpenSSH ======
----
===== О OpenSSH =====
OpenSSH (Open Secure Shell - Открытая безопасная оболочка) - Набор программ, предоставляющих шифрование сеансов связи по компьютерным сетям с использованием протокола SSH.
===== Установка OpenSSH =====
Устанавливаем OpenSSH:
sudo apt install openssh-client openssh-server openssh-sftp-server
===== Подключение по SSH =====
Подключиться к серверу:
ssh user@host
* **user** - имя пользователя на удаленном сервере
* **host** - IP-адрес или доменное имя удаленного сервера
Подключиться к серверу по нестандартному порту, используем опцию **-p**:
ssh -p 0000 user@host
Или
ssh user@host -p 0000
===== Копирование файлов и каталогов через SSH =====
==== С локального ПК на удалённый сервер ====
Скопировать файл:
scp файл.txt user@host:/путь/к/каталогу
Скопировать каталог, используем опцию **-r**:
scp -r каталог user@host:/путь/к/каталогу
Скопировать файл по нестандартному порту, используем опцию **-P**:
scp -P 0000 файл.txt user@host:/путь/к/каталогу
Скопировать каталог по нестандартному порту, используем опции **-P** **-r**:
scp -P 0000 -r каталог user@host:/путь/к/каталогу
==== С удалённого сервера на локальный ПК ====
Скопировать файл:
scp user@host:/путь/к/файлу.txt /локальный/каталог
Скопировать каталог, используем опцию **-r**:
scp -r user@host:/путь/к/каталогу /локальный/каталог
Скопировать файл по нестандартному порту, используем опцию **-P**:
scp -P 0000 user@host:/путь/к/файлу.txt /локальный/каталог
Скопировать каталог по нестандартному порту, используем опции **-P** **-r**:
scp -P 0000 -r user@host:/путь/к/каталогу /локальный/каталог
==== С одного сервера на другой ====
Скопировать файл:
scp user1@host:/путь/к/файлу.txt user2@host:/сервер2/каталог
Скопировать каталог, используем опцию **-r**:
scp -r user1@host:/путь/к/каталогу user2@host:/сервер2/каталог
Скопировать файл по нестандартному порту, используем опцию **-P**:
scp -P 0000 user1@host:/путь/к/файлу.txt user2@host:/сервер2/каталог
Скопировать каталог по нестандартному порту, используем опции **-P** **-r**:
scp -P 0000 -r user1@host:/путь/к/каталогу user2@host:/сервер2/каталог
=== Важные нюансы ===
Авторизация: \\
При выполнении команды система запросит пароль сначала для первого сервера, а затем для второго.
Как передаются данные? \\
Данные будут идти по цепочке: Сервер А ➔ Ваш компьютер (как посредник) ➔ Сервер Б.
===== Выполнение команд без входа в интерактивную сессию =====
Выполнить команду(ы):
ssh user@host "ls -lh"
ssh user@host "free -mh"
===== Настройка OpenSSH =====
Настраиваем конфиг **sshd_config**:
sudo nano /etc/ssh/sshd_config
==== Меняем стандартный порт на свой ====
Находим строку **#Port 22**:
Раскомментируем строку **#Port 22**. Где **Port 22** меняем на свой.
Пример: **Port 0000**.
Обращаем внимание: Если включён Межсетевой экран, разрешите порт для подключения
sudo ufw allow 0000
==== Запрет входа по SSH для пользователя Root ====
Найдите строку **PermitRootLogin**.
Раскомментируйте строку **PermitRootLogin yes** (если она закомментирована)
Измените её значение с **yes** на **no**.
==== Максимальное количество открытых сессий для SSH ====
Найдите строку **MaxSessions**.
Раскомментируйте строку **MaxSessions 10** (если она закомментирована)
Измените её значение с **10** на значение, которое вам нужно. К примеру на **2**.
==== Максимальное количество попыток ввода пароля за одну сессию ====
Найдите строку **MaxAuthTries**.
Раскомментируйте строку **MaxAuthTries 6** (если она закомментирована)
Измените её значение с **6** на значение, которое вам нужно. К примеру на **2**.
==== Указать время ввода пароля для SSH ====
Время, в течение которого пользователь должен успеть успешно авторизоваться на сервере.
Найдите строку **LoginGraceTime**.
Раскомментируйте строку **LoginGraceTime 2m** (если она закомментирована)
Измените её значение с **2m** на значение, которое вам нужно. К примеру на **1m** или **30s**.
==== Запрет входа по паролю ====
Если вы используйте **SSH-ключи** для авторизации, то вход по паролю можно отключить.
Найдите строку **PasswordAuthentication**.
Измените её значение с **yes** на **no**.
Сохраняем файл.
Перезагружаем SSH:
sudo systemctl restart sshd
Подключаемся:
ssh root@localhost -p 0000
===== Генерация SSH ключей =====
Создаём пару ключей (По умолчанию):
ssh-keygen
Создаём пару ключей RSA:
ssh-keygen -t rsa -b 4096
==== Опции ssh-keygen ====
* **-t** - указывает тип шифрования, который будет использоваться при генерации ключей
* **-b** - указывает длину ключа в битах
Передаём открытый SSH ключ на сервер:
Создаём каталог .ssh, если он не создан:
mkdir .ssh
Добавляем в файл **authorized_keys** открытый ключ:
nano .ssh/authorized_keys
Сохраняем файл **Ctrl+O** \\
Выход из редактора **Ctrl+X**
Готово.