При настройке Ansible (материалы будут в новых статьях), появилась необходимость в использовании SSH авторизации на удаленный сервер. Начнем с установки SSH, далее перейдем к настройке и проверке. Все примеры в рамках Debian Linux.
1. Установка SSH в Debian Linux:
apt install ssh
* тут все стандартно, как установка любого пакета;
2. Создание ключей SSH в Debian Linux:
# откроем справку по команде ssh-keygen --help
Структура ключа:
~/.ssh/id_rsa.pub — открытый ключ. Его копируют на сервера, куда нужно получить доступ.
~/.ssh/id_rsa — закрытый ключ. Его нельзя никому показывать. Если вы в письмо/чат скопипастите его вместо pub, то нужно генерировать новый ключ.
* В первом поле смотрим "ed25529 - тип шифрования", более оптимальна на сегодняшний день;
ssh-keygen -t ed25519
* При выполнении команды нас спросят: путь (папка пользователя куда сохранить открытый и закрытый ключ), пароль (можно не указывать), подтверждение пароля. Пример ниже:
3. Проверяем ключи SSH в Debian Linux:
ls -la /root/.ssh/ # или ls -la /home/user/.ssh/
4. Копируем ключи SSH на удаленный сервер:
ssh-copy-id -i /home/user/.ssh/id_ed25529.pub userserver@192.168.0.0
* Путь до ключа локально: "/home/user/.ssh/id_ed25529.pub", Куда: "userserver@192.168.0.0" - пользователь@сервер. Копирование произойдет в нужную директорию;
5. Подключаемся на удаленный сервер:
ssh userserver@192.168.0.0 # или ssh userserver@debi
* IP адрес сервера "192.168.0.0" можно заменить на имя сервера "debi", если сервер доступен в той же сети, локально. Проверить можно через ping;
ВСЕ РАБОТАЕТ, но!
6. Настройка SSH на сервере:
nano /etc/ssh/sshd_config
* Данный файл определяет политику подключения, в том числе по SSH ключам. Самое простое: после копирования ключей убрать авторизацию по логину и паролю, доступ только по ключам SSH. Есть особенность: # - комментарий(не активно), в котором может быть такая строка "# PermitRootLogin no", с одной стороны она не активна, с другой стороны по дефолту, значение может быть YES. Поэтому лучше раскомментировать и выставить нужное значение YES или NO;
Пример (подробнее Приложение 1 к статье):
PermitRootLogin yes — Вход под root по ssh разрешен.
PermitRootLogin no — Вход под root по ssh запрещен.
PermitRootLogin without-password — Вход под root по ssh разрешен только по ssh ключам.
Перезагрузка SSH:
service ssh restart
7. Копирование файлов на сервере:
Через ssh-сессию:
scp path/myfile user@8.8.8.8:/full/path/to/new/location/
Обратно тоже можно:
scp user@8.8.8.8:/full/path/to/file /path/to/put/here
Источник: http://linuxsql.ru
Приложение 1.: Описание параметров файла конфигурации ssh config