Доступ к серверу по ssh без ввода пароля на linux
Для чего всё это нужно?
Лично я не могу хранить в голове пару десятков паролей от удалённых linux серверов. К тому же их надо хранить в каком то укромном месте и вводить при подключении. Занятие не из приятных, да и чувствуется рутина... К тому же если пароль не особо надёжный - его можно взломать всевозможными способами, например перебором. В системных логах наглядно отображено, как каждый день не перестают трудиться роботы в поисках подбора паролей и нет от них спасу, разве что Denyhosts помогает.
Но о чём это я? Ни для кого не секрет, что в юникс системах для удалённого доступа по ssh, альтернативе паролям, существуют ключи. Так же они используются некоторыми приложениями, например git'ом для передачи изменений в проекте, да много еще для чего... Главным образом, ключи делают доступ к серверу действительно безопасным. Не требуя ввода пароля ключ содержит алгоритм с использованием открытого ключа DSA, что обеспечивает хорошую безопасность. Сам ключ состоит из двух частей. Секретный хранится только у владельца, а публичный копируется на удаленный сервер. При этом доступ пользователя по паролю вообще можно отключить, чтобы пароль невозможно было подобрать. Ну как интересно? Думаю стоит приступить к практике:
Для начала нам надо сгенерировать ключи id_rsa и id_rsa.pub следующим способом:
Если требуется сохранить файл с ключём в нестандартной директории, вводим нужное, иначе просто Enter
Парольную фразу тоже оставим пустой.
После ненавязчивого извещения терминала о успешном сохранении ключей, можно приступить к подключению
Вводим yes конечно же и далее пароль
При правильном вводе пароля, мы должны успешно залогиниться. Что же делать дальше? Существует минимум 2 способа установки ключа на сервер.
1 способ: Ручное копирование ключа (всего содержимого файла) из ранее сгенерированного файла ~/.ssh/id_rsa.pub на локальной машине в файл ~/.ssh/authorized_keys на удалённом сервере.
2 способ: Использование утилиты ssh-copy-id.
Воспользуемся вторым способом, так как он более краток и удобен. На локальной машине выполним следующее:
Кстати утилита существует для всех unix'like систем, например для Ubuntu (Debian), Fedora, FreeBSD и Mac OS X.
После успешного копирования, пробуем зайти на удалённый сервер еще раз. На этот раз сервер не спросил пароль, а сразу впустил в оболочку, разве не круто?
Но на этом статья не заканчивается...
У ssh есть очень удобная возможность создавать конфигурационный файл для хранения удалённых хостов. Рассмотрим же эту возможность.
В директории .ssh создадим файл кофигурации, который так называется "config" и внесём в него некоторые данные нашего удалённого сервера:
После создания данного файла, мы сожем подключиться к хосту используя удобное нам имя. Пробуем!
Если вход на сервер успешен, позравляю!!! Возьми себе на вооружение данную возможность. Если подключение не удалось, значит читал не внимательно или возникла непреодолимая сила =) В любом случае жду комментарии к данной статье с вопросами, критикой и пожеланиями!
С Уважением, PazitiFF.
$ ssh-keygen -t rsa -C "you_email@example.com" Generating public/private rsa key pair. Enter file in which to save the key (/home/example/.ssh/id_rsa):
Enter passphrase (empty for no passphrase): Enter same passphrase again:
Your identification has been saved in /home/example/.ssh/id_rsa. Your public key has been saved in /home/example/.ssh/id_rsa.pub.
$ ssh user@example.com The authenticity of host 'example.com (77.37.152.197)' can't be established. RSA key fingerprint is 62:60:75:09:91:e6:35:50:9f:48:fe:f2:18:a5:bd:b6. Are you sure you want to continue connecting (yes/no)?
user@example.com's password:
$ ssh-copy-id -i ~/.ssh/id_rsa.pub user@example.com
$ vim ~/.ssh/config host example.com #Удобочитаемое имя хоста для подключения (псевдоним) HostName 111.222.111.222 #ip-адрес хоста или служебное доменное имя, например zoom.vps-private.net User user #Имя пользователя Port 22 #Порт подключения (Необязательно) IdentityFile ~/.ssh/id_rsa #Путь к файлу с секретным ключём, если он находится не в стандартном расположении (Необязательно)
$ ssh example.com
Комментарии
Я смог настроить подключение без пароля по этой статье:
http://joyit.ru/administrirovanie/14-ssh.html
Интересное дополнение, хотя помоему тоже самое =) Ладно, ссылку оставить не жалко, держи!
Актуально. Скажите мне, пожалуйста - где я могу найти больше информации по этому вопросу?
Годная статья, спасибо!
Добавить комментарий