SSH авторизация по ключу

Настройка SSH авторизации по ключу на Linux

Шаг 1: Создание пары ключей SSH

  1. Откройте терминал на вашем локальном компьютере.
  2. Запустите следующую команду для создания новой пары ключей (замените [email protected] на вашу электронную почту):
ssh-keygen -t rsa -b 4096 -C "[email protected]"
  1. При появлении запроса укажите путь для сохранения ключа (нажмите Enter для использования пути по умолчанию).
  2. Введите парольную фразу для дополнительной безопасности при запросе (можно оставить пустым для безпарольного доступа).

Шаг 2: Установка публичного ключа на сервер

  1. Скопируйте публичный ключ на сервер с помощью следующей команды:
ssh-copy-id user@hostname

ssh-copy-id -i ~/.ssh/id_rsa [email protected]

Проверяем возможность залогиниться

ssh [email protected]

Замените user на ваше имя пользователя и hostname на IP-адрес или имя хоста сервера.

Шаг 3: Настройка SSH на сервере

  1. Войдите на сервер:
ssh user@hostname
  1. Отредактируйте файл конфигурации SSH:
sudo nano /etc/ssh/sshd_config
  1. Убедитесь, что следующие строки настроены так:
PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys
  1. Отключите аутентификацию по паролю, установив:
PasswordAuthentication no
  1. Сохраните изменения и закройте редактор.
  2. Перезапустите SSH сервис для применения изменений:
sudo systemctl restart sshd

Шаг 4: Проверка

  1. Попытайтесь войти на сервер с вашего локального компьютера:
ssh user@hostname

Если всё настроено правильно, система позволит вам войти на сервер без запроса пароля.

Bash скрипта для генерации SSH ключа

Шаг 1: Сохранение скрипта

  • Откройте текстовый редактор (например, nano или vim).
  • Вставьте следующий код скрипта:
    #!/bin/bash
    
    # Запросить комментарий
    echo "Введите комментарий для ключа (по умолчанию ''):"
    read comment
    comment=${comment:-""}
    
    # Запросить пароль для ключа
    echo "Введите пароль для ключа (нажмите Enter для отсутствия пароля):"
    read -s password
    
    # Запросить имя файла для ключа
    echo "Введите имя файла для ключа (по умолчанию 'homelab'):"
    read filename
    filename=${filename:-"homelab"}
    
    # Генерация ключа с использованием алгоритма ed25519
    if [ -z "$password" ]; then
      ssh-keygen -t ed25519 -C "$comment" -f "$filename"
    else
      ssh-keygen -t ed25519 -C "$comment" -N "$password" -f "$filename"
    fi
    
    echo "Ключ сгенерирован и сохранен в $filename"
    
    
    

Сохраните файл, например, как generate_ssh_key.sh.

Шаг 2: Сделать скрипт исполняемым

Откройте терминал и перейдите к директории, где сохранен файл:

cd путь/к/директории

Сделайте файл исполняемым:

chmod +x generate_ssh_key.sh

Шаг 3: Запуск скрипта

Запустите скрипт в терминале:

./generate_ssh_key.sh

Следуйте подсказкам скрипта для ввода комментария, пароля и имени файла.

Шаг 4: Проверка результата

После выполнения скрипта вы увидите сообщение о том, что ключ сгенерирован и сохранен в указанном файле.
Проверьте содержимое каталога командой ls для убедительности наличия нового ключа.