SSH авторизация по ключу
Генерация RSA-ключей для SSH
Чтобы не вводить пароли к разным серверам по сто раз в день можно настроить SSH-авторизацию с помощью ключей.Генерируем пару ключей. Я предпочитаю шифровать ключ с помощью пароля, но если не хочется вводить пароль каждый раз при расшифровке ключа — просто нажмитеEnter в ответ на запрос пароля при генерации:
$ ssh-keygen -t rsa -b 4096 Generating public/private rsa key pair. Enter file in which to save the key (/home/linuxgeek/.ssh/id_rsa): Enter passphrase (empty for no passphrase): ecaeth3U Enter same passphrase again: ecaeth3U Your identification has been saved in /home/linuxgeek/.ssh/id_rsa. Your public key has been saved in /home/linuxgeek/.ssh/id_rsa.pub. The key fingerprint is: b9:e5:ad:d6:40:66:88:c5:eb:14:0b:71:61:46:df:84 linuxgeek@linuxgeek.ru The key's randomart image is: +--[ RSA 4096]----+ | .+*. .. | | .++.Eo | | + =. . | | . =.+ | | oS+. | | .+.. | | . .o. | | ... | | .. | +-----------------+В директории
~/.ssh/
будет сгенерирована пара RSA-ключей, длиной 4096 бит.Выставим права:
$ chmod 0700 ~/.ssh/ $ chmod 0600 ~/.ssh/id_rsa* $ ls ~/.ssh/ -rw-r--r-- 1 linuxgeek linuxgeek 5.9K 2010-09-13 18:02 known_hosts -rw------- 1 linuxgeek linuxgeek 3.3K 2010-09-13 18:20 id_rsa -rw------- 1 linuxgeek linuxgeek 747 2010-09-13 18:20 id_rsa.pubТеперь нужно передать публичный ключ — id_rsa.pub на сервер. А приватный ключ —id_rsa нужно хранить в секрете (например, на зашифрованной флешке).
ssh-copy-id
скопирует публичный ключ на сервер в файл ~/.ssh/authorized_keys
. Если порт на котором слушает SSH-демон на сервере отличается от стандартного и вы пользуетесь Debian — нужно заключить в кавычки информацию о подключении, как показано ниже (баг #99785):$ ssh-copy-id "-p 22000 linuxgeek@linuxgeek.ru"
Настройки
Нужно выставить правильные права на директорию~/.ssh/
на сервере:$ chmod 0700 ~/.ssh/ $ chmod 0600 ~/.ssh/authorized_keysИ убедиться, что в файле
/etc/ssh/sshd_config
разрешена авторизация по ключам:# nano /etc/ssh/sshd_config … RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys … # /etc/init.d/ssh restartМожно также полностью запретить авторизацию по паролям:
# nano /etc/ssh/sshd_config … PasswordAuthentication no PermitEmptyPasswords no … # /etc/init.d/ssh restartВнимание! Убедитесь перед этим, что авторизация по ключу работает!
Теперь нужно отредактировать файл
~/.ssh/config
и внести туда информацию об SSH-серверах, с которыми будет осуществляться соединение (вообще-то это и не обязательно, просто для удобства):Host 192.168.0.1 User linuxgeek Port 22000 IdentityFile /home/linuxgeek/.ssh/id_rsa Protocol 2 PubkeyAuthentication yesВсе опции, кроме
User
— необательны. Для подробностей см. man ssh_config
.Использование ssh-agent
ssh-agent хранит в памяти ключи для соединения с SSH-серверами. Чтобы добавить ключ необходимо выполнить следующую команду:$ ssh-add Enter passphrase for /home/linuxgeek/.ssh/id_rsa: Identity added: /home/linuxgeek/.ssh/id_rsa (/home/linuxgeek/.ssh/id_rsa)Если нужно использовать другой ключ, его можно указать в качестве аргумента:
$ ssh-add /path/to/alternate/keyМожно создать символическую ссылку
~/.ssh/id_rsa
, которая будет указывать на ключ, находящийся на зашифрованном носителе или разделе и использовать ssh-add без аргументов:$ cd ~/.ssh/ $ ln -s id_rsa /path/to/encrypted/volume/id_rsa $ ls -lh total 16K … lrwxrwxrwx 1 linuxgeek linuxgeek 25 2010-09-16 10:52 id_rsa -> /path/to/encrypted/volume/id_rsa … $ ssh-add Enter passphrase for /home/linuxgeek/.ssh/id_rsa:Соединяемся с сервером:
$ ssh 192.168.0.1
Ошибки
Если во время выполнения ssh-add выдается следующее сообщение:$ ssh-add Could not open a connection to your authentication agent.Нужно выполнить следующее:
$ exec ssh-agent bashВместо
bash
можно указать используемую оболочку.Ссылки по теме:
- Как смонтировать файловую систему по SSH в локальный каталог
- SSH авторизация по ключу — здесь также есть инструкции для Windows и PuTTY
- How do I set up my UNIX account for OpenSSH usage? — Indiana University
Комментариев нет:
Отправить комментарий