Secure Shell (SSH) — это криптографический сетевой протокол, используемый для безопасного соединения между клиентом и сервером и поддерживающий различные механизмы аутентификации. Двумя наиболее популярными механизмами являются аутентификация на основе паролей и аутентификация на основе открытого ключа.

В этом руководстве мы покажем вам, как настроить аутентификацию на основе ключа SSH, а также как подключиться к вашему серверу Linux без ввода пароля.

Настройка SSH входа без пароля

Чтобы настроить SSH-вход без пароля в Linux, все, что вам нужно сделать, это сгенерировать открытый ключ аутентификации и добавить его в файл ~/.ssh/authorized_keys удаленных хостов.

Следующие шаги описывают процесс настройки входа по SSH без пароля:

  1. Проверьте существующую пару ключей SSH.

    Перед созданием новой пары ключей SSH сначала проверьте, есть ли у вас уже ключ SSH на вашем клиентском компьютере, потому что вы не хотите перезаписывать существующие ключи.

    Выполните следующую команду ls, чтобы проверить наличие существующих ключей SSH:

    ls -al ~/.ssh/id_*.pub

    Если есть существующие ключи, вы можете использовать их и пропустить следующий шаг или создать резервную копию старых ключей и сгенерировать новый.

    Если вы видите No such file or directory или no matches found это означает, что у вас нет ключа SSH, и вы можете перейти к следующему шагу и сгенерировать новый.

  2. Создайте новую пару ключей SSH.

    Следующая команда сгенерирует новую пару ключей SSH 4096 бит с вашим адресом электронной почты в качестве комментария:

    ssh-keygen -t rsa -b 4096 -C "your_email@domain.com"

    Нажмите Enter чтобы принять расположение и имя файла по умолчанию:

    Enter file in which to save the key (/home/yourusername/.ssh/id_rsa):

    Затем инструмент ssh-keygen попросит вас ввести безопасную парольную фразу. Независимо от того, хотите ли вы использовать кодовую фразу, решать вам, если вы решите использовать кодовую фразу, вы получите дополнительный уровень безопасности. В большинстве случаев разработчики и системные администраторы используют SSH без парольной фразы, поскольку они полезны для полностью автоматизированных процессов. Если вы не хотите использовать кодовую фразу, просто нажмите Enter .

    Enter passphrase (empty for no passphrase):

    В целом взаимодействие выглядит так:

    Чтобы убедиться, что ключи SSH сгенерированы, вы можете указать свои новые закрытые и открытые ключи с помощью:

    ls ~/.ssh/id_*
    /home/yourusername/.ssh/id_rsa /home/yourusername/.ssh/id_rsa.pub
  3. Скопируйте открытый ключ

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

    Самый простой способ скопировать ваш открытый ключ на сервер — использовать команду ssh-copy-id . На вашем локальном машинном терминале введите:

    ssh-copy-id remote_username@server_ip_address

    Вам будет предложено ввести пароль remote_username :

    remote_username@server_ip_address's password:

    После аутентификации пользователя открытый ключ будет добавлен в файл authorized_keys удаленного пользователя, и соединение будет закрыто.

    Если по какой-либо причине ssh-copy-id недоступна на вашем локальном компьютере, вы можете использовать следующую команду для копирования открытого ключа:

    cat ~/.ssh/id_rsa.pub | ssh remote_username@server_ip_address "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
  4. Войдите на свой сервер с помощью ключей SSH

    После выполнения описанных выше действий вы сможете войти на удаленный сервер без запроса пароля.

    Чтобы проверить это, просто попробуйте войти на свой сервер через SSH:

    ssh remote_username@server_ip_address

    Если все прошло успешно, вы сразу же войдете в систему.

Отключение аутентификации по паролю SSH

Чтобы добавить дополнительный уровень безопасности к вашему серверу, вы можете отключить аутентификацию по паролю для SSH.

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

В следующих руководствах описывается, как настроить доступ sudo:

  1. Войдите на удаленный сервер с помощью ключей SSH, либо как пользователь с привилегиями sudo, либо как пользователь root:

    ssh sudo_user@server_ip_address
  2. Откройте файл конфигурации SSH /etc/ssh/sshd_config , найдите следующие директивы и измените их следующим образом:

    / и т. д. / ssh / sshd_config
    PasswordAuthentication no ChallengeResponseAuthentication no UsePAM no

    Как только вы закончите, сохраните файл и перезапустите службу SSH.

    На серверах Ubuntu или Debian выполните следующую команду:

    sudo systemctl restart ssh

    На серверах CentOS или Fedora выполните следующую команду:

    sudo systemctl restart sshd

Выводы

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

Мы также показали вам, как отключить аутентификацию по паролю SSH и добавить дополнительный уровень безопасности на ваш сервер.

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

Оригинал статьи.