SSH авторизация по ключу — как настроить
Для управления удаленными репозиториями используют специальные сетевые протоколы. Один из самых популярных и при этом безопасных типов соединений считается протокол SSH. Но только после правильной настройки файла конфигураций для протокола он будет работать максимально безопасно и его защита будет непробивной. В ином случае нет смысла использовать именно SSH в работе. В данной статье будут рассмотрены способы создания соединения при помощи специальных кодов, то есть SSH авторизация по ключу. Кроме того, в посте найдете обзор двух SSH keygen для разных операционных систем: GIT для Linux и Putty для Windows.
Содержание
Почему лучше использовать SSH ключи для авторизации
У вас есть два варианта, как настроить соединение с сервером. Первый — это стандартная авторизация, когда пользователю нужно вводить логин и пароль. Второй метод более продвинутый — вам не нужно будет вводить пароль и аутентификация будет проходить в автоматическом режиме. Суть в том, что у вас на компьютере будет размещен специальный SSH ключ. Сервер будет в автоматическом режиме сверять наличие этого ключа и пропускать соответственных юзеров на хост.
Использовать SSH ключ полезно и из соображений безопасности, так как вводимый пароль легко перехватить.
Тем более, тогда на хост смогут заходить посторонние, чего никак нельзя допустить. А SSH ключ размещается на компьютере и тщательно шифруется. Даже если злоумышленник случайно краем глаза увидит ключ, он не сможет его запомнить — там слишком много рандомных символов, даже для гения запоминания. А поскольку вы еще и сможете настроить режим authorized различными способами, к примеру, ограничить порты или запретить выполнение определенных программ.
Проблема в том, что для начала использования такого способа аутентификации, вам нужно сгенерировать ключи, открытый и публичный, а также перенести публичный на хост. Вот в этом-то вам и понадобится SSH keygen, то есть генератор ключей.
Быстрая генерация ключа на Linux
Linux — отличная ОС для программистов, так как многие возможности здесь уже предустановлены. Так, вы сможете создать новые ключи не устанавливая никакие посторонние программы — через стандартную командную строку. Для создания ключей достаточно будет прописать строку SSH keygen. А после этого важно перенести публичные ключи на хост. В этом поможет утилита SSH copy ID на Linux.
SSH copy ID работает всего с одним кодом: -i. Тем не менее, этой короткой команды будет достаточно, чтобы перенести ключи на хост. Вам необходимо обязательно знать данные доступа к серверу, когда будете пользоваться SSH copy ID. Учтите, что утилита использует порт по умолчанию, то есть значение 22. Обычно, в целях безопасности пользователи меняют порт на другое значение. Если вы также меняли порт, то введите в SSH copy ID новое значение, например: -p 2020. В последующем, когда будете повторно переносить открытый код на хост при помощи SSH copy ID, все равно нужно будет прописывать измененный порт. Но лучше так, чем рисковать безопасностью системы.
Как правило, описанная утилита установлена у всех в Linux. Но бывает, что приходится переносить код при помощи authorized, так как в старых версиях сервера OpenSSH функция copy ID не предусмотрена. При этом нужно будет немного помучиться с соответствием каталогов, чтобы функция authorized заработала. У вас должна быть папка .ssh с правами доступа, равными 700. Тогда нужно будет прописать расположение ключей, данные для входа на хост и функцию authorized.
Также важно предварительно правильно настроить файл конфигураций, чтобы соединение посредством ключа заработала. Для этого нужно отредактировать файл config и установить в нем authorized для аутентификации при помощи Pubkey. Второй вариант типа authorized — это Identity. Но такую authorized лучше сразу отключить, дабы не оставить слабое место в протоколе. Также вам нужно будет указать, где находится файл authorized с ключом. После этого, когда вы запустите перенос ключей на сервер, компьютер проверит наличие соответствующего ключа в указанном файле authorized. Если в authorized его нет, то произойдет ошибка, потому будьте бдительны с заполнением информации о расположении. После того, как вручную или при помощи утилиты перенесете данные authorized на хост, попробуйте зайти на него. Если пароль не запрашивает, значит все в порядке!
GIT
Теперь разберем SSH keygen при помощи приложения GIT, которое часто используют на Линуксе и даже на ОС Windows. Для начала вам нужно скачать установщик приложения. Сделать это рекомендуется через официальный сайт GIT, чтобы вы установили последнюю версию проги. После скачивания установите GIT на компьютер. После установки приложения у вас на компьютере появится две утилиты. Генерация ключей производится через панель управления GIT Bash.
Итак, чтобы запустить generator для ключей, вам необходимо открыть консоль управления GIT. После этого следует ввести SSH keygen в появившуюся командную строку. GIT не активирует SSH keygen в том случае, если у вас нет файла и папки, куда нужно сохранять сгенерированный ключ. У вас должна быть папка .ssh и файл для сохранения ключей. Потом нажмете Enter и GIT запросит у вас пароль. Если планируете использовать скрипты для передачи данных между сервером и клиентом, то не стоит вводить какой-либо пароль. Далее нажмете «Ввод» еще раз, чтобы оставить строку «Пароль повторно» пустой, и GIT запустит generator — будет сформирован ключ.
Чтобы получить доступ к удаленному серверу, вам нужно будет зайти в папку, которую вы прописали для SSH keygen. Там будет два файла: один публичный код, а второй секретный. Вам нужен публичный с расширением pub. Его вы отправите системному администратору на сервер. После этого вам не придется каждый раз вводить пароль и логин для входа на хост — generator сделает это за вас.
Putty
Теперь рассмотрим другое популярное приложение для генерации ключей для организации аутентификации Pubkey — Putty. Для начала вам нужно точно так же, как и с предыдущим приложением, скачать установщик и запустить инсталляцию Putty на компьютере. После этого нужно будет открыть приложение на компьютере и запустить SSH keygen. Чтобы запустить SSH keygen, вам нужно будет выбрать параметры для будущего ключа в настройках Putty. Рекомендуется использоваться SSH-2 RSA — остальные параметры небезопасны. А на счет длины, лучше выбирайте 2048 бит. После этого SSH keygen запустится.
Следующий шаг, который предложит вам Putty аналогичен, как и с консолем GIT — вам будет предложено ввести кодовую фразу для дополнительной авторизации. Но тогда теряется смысл использования ключей, потому лучше оставьте поле Key passphrase пустым — Putty вам это простит. Особенность Putty в том, что приложение создает особое расширение для файла приватного ключа — .ppk. Зато публичный ключ так и останется вида id_rsa.pub.
Казалось, используя Putty вам не придется обращаться к командным строкам, чего так не любят новички, но не тут-то было! Вам придется немного помучиться с копированием публичного ключа на удаленный сервис. Нужно будет запустить PSFTP и ввести open имя_сервера. Далее вам нужно будет скопировать и вставить публичный код из файла id_rsa.pub, несколько раз нажать Yes и следуя инструкции ключ будет перенес на удаленный хост.
После переноса ключа нужно будет выполнить еще одно действие — добавить ключ в список authorized_keys. Это нужно, чтобы указанный ключ появился в числе тех, которые проходят аутентификацию. Для добавления ключа в Putty нужно будет прописать: SSH кейген -i -f /tmp/id_rsa.pub >> /root/.ssh/authorized_keys. Потом останется лишь при помощи мышки нажать Add Key и вы сможете входить на сервер без лишней нервотрепки с логинами и паролями. Это очень удобно и рекомендуется всем, кто имеет дело с SSH-подключениями на постоянной основе.