54.221.73.186

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

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

У вас есть отдельно стоящий сервер и вы заходите на него через ssh большое количество раз в день и каждый раз вводите пароль, который состоит больше 10 символов?

Здесь вы можете узнать как устранить эту проблему.

Ключи SSH. Или метод Identity/Pubkey

При использовании метода идентификации Identity/Pubkey исключается использования статических паролей. Чтобы каждый раз не набирать пароли, которые можно перехватить с помощью “keylogger’а”, вы будете хранить на диске несколько ключей, которые и будут использоваться для проверки подлинности.

Вот некоторые из положительных моментов этого типа аутентификации:

  • Никто не сможет войти на сервер с Вашей учетной записью, так как им необходимо обладать приватным ключом и кодовой фразой.
  • Администратор сервера может убрать пароль учетной записи, дабы исключить его дискредитацию.
  • Вы можете использовать программу ssh-agent и он будет предоставлять аутентификационные данные за Вас.
  • Вы можете устанавливать определенные ограничения, например запрещая перенаправление портов, выполнение определенных программ и т.д.

Генерация SSH ключей. Или создание Identity/Pubkey

Для генерации ключей вам необходимо воспользоваться программой ssh-keygen.

localhost$ ssh-keygen -t rsa

Опцией -t rsa мы указали тип создаваемых ключей (возможны варианты ключей — rsa1, rsa или dsa)

Настройка сервера SSH

Все вышеуказанные манипуляции делаются на локальной машине, теперь надо настроить удаленную (сервер куда вы будете заходить).

Ключи есть, теперь необходимо разрешить данный тип аутентификации на сервере SSH. Сначала определим тип аутентификации — Pubkey или Identity, установив следующие настройки в sshd_config:

# Should we allow Identity (SSH version 1) authentication?
RSAAuthentication yes
  
# Should we allow Pubkey (SSH version 2) authentication?
PubkeyAuthentication yes
 
# Where do we look for authorized public keys?
# If it doesn't start with a slash, then it is
# relative to the user's home directory
AuthorizedKeysFile    .ssh/authorized_keys

Приведенные выше значения разрешают аутентификацию Identity/Pubkey для протокола SSH версии 1 и 2, и проверяют наличие публичных ключей в файле $HOME/.ssh/authorized_keys.

Необходимо проверить наличие этих строк в файле конфигурации /etc/ssh/sshd_config, если таковых нету — добавить и перезапустить сервис.

Копирование файла с ключом на удалённый хост

Первый вариант

ssh-copy-id

У вас должна быть программа ssh-copy-id и с ее помощью

ssh-copy-id -i ~/.ssh/id_rsa.pub youruser@remote.server.host

«ручной» вариант

cat ~/.ssh/id_rsa.pub | ssh -l user@remote.server.host ‘mkdir -p
.ssh;touch .ssh/authorized_keys; cat >>.ssh/authorized_keys;chmod 700
~/.ssh;chmod 600 ~/.ssh/authorized_keys’

или такой

localhost$ scp ~/.ssh/id_rsa.pub youruser@remote.server.host
localhost$ ssh youruser@remote.server.host
remote.server.host$ [ -d ~/.ssh ] || (mkdir ~/.ssh; chmod 700 ~/.ssh)
remote.server.host$ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
remote.server.host$ chmod 600 ~/.ssh/authorized_keys

Все этапы завершены, всё настроили — пора пробовать

ssh youruser@remote.server.host