Признаюсь устал я вводить сложные пароли при подключении по SSH, и сегодня решил дополнить статью написанную ранее с одноименным названием автоматическое подключение сохраненной сессии по SSH в PuTTU написанную мной ранее. К моему счастью проблема довольно быстро нашла свое решение.
Достаточно настроить ssh сервер на авторизацию по ключу. Эта заметка поможет Вам настроить авторизацию на сервере SSH по ключу. В моем случае я использую Ubuntu.
Для того что бы установить ssh сервер нужно выполнить следующую команду:
1 |
sudo apt-get install openssh-server |
Для начала, произведем начальную настройку ssh сервера для авторизации по ключу. Откроем на редактирование файл /etc/ssh/sshd_config
1 |
sudo nano /etc/ssh/sshd_config |
Тут нас интересуют следующие строки, их всего три (Должны быть раскомментированы, и иметь указанные значения):
1 2 3 4 5 |
........... RSAAuthentication yes PubkeyAuthentication yes ........... AuthorizedKeysFile %h/.ssh/authorized_keys |
Перезапустим сервер ssh:
1 |
sudo restart ssh |
Итак, привели строки файла конфигурации ssh к требуемому виду.
содержание
Генерируем RSA ключ
Далее необходимо будет сгенерировать ключи для авторизации. Дальнейшие действия производятся на самом ssh сервере (Не на компьютере на котором вы будете работать при помощи ssh клиента, а именно там где установили open-ssh):
1 |
ssh-keygen -t rsa |
Вы можете вместо RSA использовать DSA. В отличии от RSA, DSA используется только для цифровой подписи, и не используется для шифрования.
Далее в ответ мы получим следующие строки:
Введите название ключа, в принципе это не важно, но желательно что бы в дальнейшем не запутаться, если будет несколько ключей.
1 2 |
Generating public/private rsa key pair. Enter file in which to save the key (/home/leodev/.ssh/id_rsa): |
Тут и далее, будем считать что в данном примере я ввел leodev.ru-rsa
Теперь система попросит ввести пароль для сертификата, я его не ввожу.
1 2 |
Enter passphrase (empty for no passphrase): Enter same passphrase again: |
Сертификаты сгенерированы:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Your identification has been saved in melfis.ru-rsa. Your public key has been saved in leodev.ru-rsa.pub. The key fingerprint is: 23:3f:f4:5c:c4:48:6b:37:4c:ca:f5:24:29:63:e7:ae leodev@NAT-SERVER The key's randomart image is: +--[ RSA 2048]----+ | . +.. | | o+Oo+ | | .*=* . | | . o.. | | . S .. | | + + .. | | o o. | | .E | | | +-----------------+ |
Теперь в папке в которой вы находились, имеются два ключа:
1 2 |
leodev.ru-rsa leodev.ru-rsa.pub |
Один из них приватный: leodev.ru-rsa, другой публичный: leodev.ru-rsa.pub.
Теперь Вам необходимо установить на Ваш сервер сгенерированный ключ. (Да, мы находимся все еще на сервере где установлен Spen-SSH). По мимо установки ключа, мы сразу выставим права на хранилище ключей.
Выполним следующие команды:
1 2 |
cat leodev.ru-rsa.pub >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys |
Подключение к серверу
Linux
Теперь перейдем на компьютер, который должен быть авторизирован на ssh сервере по ключу. (Теперь мы работаем на Вашем локальном компьютере.)
Заберем ключ к себе на компьютер следующей командой (Я предполагаю, что Вы выполняли предыдущие пункты в домашнем каталоге пользователя на сервере):
1 |
scp ИМЯ_ПОЛЬЗОВАТЕЛЯ@АДРЕС_СЕРВЕРА:~/leodev-rsa ~/.ssh/leodev-key |
После того как ключ получен, загрузим его в наше локальное хранилище:
1 |
ssh-add ~/.ssh/<span class="crayon-v">leodev</span><span class="crayon-o">-</span><span class="crayon-v">key</span> |
Введите пароль который Вы установили для этого ключа. После того как ключ успешно загружен, пробуем подключится к серверу:
1 |
ssh ИМЯ_ПОЛЬЗОВАТЕЛЯ@АДРЕС_СЕРВЕРА |
В результате чего, пароль запрашиваться не будет.
Windows
Копируем приватный ключ сгенерированный ранее (leodev.ru-rsa) на клиента с которого хотим подключаться к серверу, открываем его с помощью утилиты PUTTYGEN и сохраняем PRIVATE_KEY в моем случае в дирректорию:
Windows C:\Users\LEO\.ssh
И в настройках PuTTY указываем путь к нашему ключу, не забываем сохранить настройку в конкретной сессии нажав кнопку SAVE.
Далее применив статью ниже вы можете настроить доступ к Вашему серверу в один клик по ярлыку
Отключить авторизацию SSH по паролю
Если Вам удалось подключится к серверу SSH посредством ключа, то наверное не плохим решением будет полное отключение авторизации по паролю, хотя я предпочитаю оставить запасной вход обычно. Для этого на сервере необходимо открыть файл /etc/ssh/sshd_config и изменить следующую строку:
1 |
PasswordAuthentication yes |
на вот такую:
1 |
PasswordAuthentication no |
И не забудьте перезапустить сервер Open-SSH
На этом все. Можете «слить» созданные вами ключи на флешку и использовать их для авторизации по ssh без ввода пароля.
В статье использовались материалы http://melfis.ru
Статья отличная. Код оформлен ужасно, не могу скопировать его частично, постоянно вываливается панелька вверху.
в панельке сверху есть кнопка копирующая код
Извините, но это бред какой то.
Все делается наоборот, на клиенте генерится пара ключей и открытый копируется на сервер.
А в Вашем примере Вы с сервера забираете закрытый ключ и храните его на всех клиентах, да к тому же еще и на флешке.
Не учите такому людей, не надо.
Все зависит от постановки, скажем если вы собираетесь ходить в гит, вы отдаете в настройки гита публичный ключ, приватный остается у вас
Спасибо огромное. я себе сделал на основе статьи более детальные пометки.
например, sudo restart ssh у меня не работает. Выполнял sudo service ssh restart
Использовал ubuntu 20.04