====== 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** Готово.