Авторизация на сервере и хостинге по ключу без ввода пароля

Необходимые инструменты присутствуют в любом дистрибутиве Linux, поэтому процесс настройки выглядит одинаково для всех. Для начала необходимо сгенерировать закрытый и открытый ssh-key в каталоге .ssh на локальном компьютере. Если в корне файловой системе отсутствует директория с таким именем, её необходимо создать:

Шаг 1: Логинемся под пользователем root

ssh root@your_server_ip

И делаем свое черное дело список здесь список здесь.

Потом вы подумали, что это очень легко работать под правами root, нужно усложнить себе работу и ввести новую сущность — бесправного пользователя и обязательно дать ему имя как ваш ник в Одноглазиках (сорри, вы продвинутые тогда берите из VK)! Чтобы когда вы в логах (/var/log/) увидите как хакеры пробуют взломать вашего демона SSH и не догадались о вашем нике из Одноглазиков — это победа!! Вы можете гордиться вашим ником в социальных сетях — его никто не знает. И значит можно пароль поставить как на домашний роутер admin. Я шутил!

По делу: не работайте от root, пожалуйста!

Создание ключа

Для создания ключа в ОС Windows мы будем использовать утилиту PuTTYgen.

Она устанавливается как часть стандартной установки пакета

Нет необходимости в отдельной загрузке PuTTYgen

Загрузите установочный пакет PuTTY и установите весь пакет.

Запустите PuTTYgen

Перейдите в меню «Пуск» —> «Все программы» —> «PuTTYgen«

Чтобы создать новую пару ключей, выберите тип ключа для генерации из нижней части экрана

(с использованием SSH-2 RSA с размером ключа 2048 бит подходит для большинства людей, другой хорошей общеизвестной альтернативой является ECDSA).

Затем нажмите «Generate» и начните перемещать курсор в окне на пустом поле.

Putty использует движения мыши для генерации случайных значений.

Точный способ перемещения мыши не может быть предсказан внешним злоумышленником.

Вам потребуется подвигать мышью в течение некоторого времени, в зависимости от размера вашего ключа. Когда вы ее перемещаете, зеленый индикатор прогресса должен продвигаться вперед.

Читайте также:  Обзор MIUI 12.5, когда выйдет и какие смартфоны получат обновление

Как только индикатор выполнения будет заполнен, произойдет фактическое вычисление генерации ключа.

По завершении открытый ключ (public key) должен появиться в окне.

Теперь вы можете указать фразу пароль для ключа (можно не указывать).

Вам необходимо сохранить хотя бы закрытый ключ (privat key), нажав «Save private key«.

К серверам OpenSSH доступ к учетной записи предоставляется путем добавления открытого ключа (public key) в файл ~/.ssh /authorized_keys на сервере.

Как подключиться по SHH

Для подключения к удаленному серверу необходима специальная программа. В *nix-подобных операционных системах подобная программа установлена по умолчанию. Для Windows необходимо установить стороннюю программу, например, скачать Putty. После установки программы запустите Putty ().

В поле «Host Name (or IP address)» введите IP адрес удаленного сервера и нажмите кнопку «Open». Обратите внимание, что «Connection type» (Тип подключения) должен быть установлен SSH. Откроется SSH консоль, где необходимо ввести имя пользователя и вводе пароля никакие символы не будут отображаться.

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

Я, надеюсь, у вас уже есть свой сервер или хостинг? Если нет, то, как друпалер до мозга и костей, я рекомендую IT-Patrol, который даже на минимальном тарифном плане предоставляет доступ по SSH. Для примера, я продолжу повествование на примере этого хостинга.

  1. Авторизируемся на сервере по предоставленной связке «логин – пароль» и переходим в предоставленную нам домашнюю директорию — /home/u1234;
  2. Создаем директорию .ssh c правами «700»;
  3. В директории .ssh создаем файл authorized_keys с правами «600»;
  4. Закидываем все необходимые Public keys в authorized_keys по принципу: одна строка – один ключ.

Для любителей все делать через консоль:

  • cd ~ && ls la | grep .ssh (проверяем наличие папки SSH конфигов домашнем каталоге);
  • cd ~ && mkdir .ssh (в случае отсутствия папки);
  • cd ~ && chmod 700 .ssh;
  • sshkeygen i f ~/public.pub >> ~/.ssh/authorized_keys (импортируем закаченный ранее файл публичного ключа в authorized_keys файл;
  • ~ && chmod 600 .ssh/authorized_keys.

Открытый ключ

На удаленном хосте, к которому мы будем подключаться, тоже надо выполнить некоторые действия:

На этом почти все. Осталось проверить. Проверяем:

ssh -i ./.ssh/id_dsa -p 22

123 ssh i ./.ssh/id_dsa p 22

Первый раз надо в любом случае подключиться руками, т.к. вас спросят, доверяете ли вы «фингерпринту» вашего ключа и вы должны будете утвердительно ответить, после чего удаленный хост будет добавлен в known hosts на постоянной основе.

Теперь вы сможете использовать выполнение команд на удаленных хостах в ваших скриптах с использованием авторизации по ключу без участия пользователя.

Как импортировать ключ на MikroTik, написано в статье MikroTik SSH key.

Обмен ключами шифрования

Когда мы запус­ка­ем SSH-клиент и гово­рим ему соеди­нить­ся с нуж­ным сер­ве­ром, про­ис­хо­дит следующее:

  • Сер­вер отправ­ля­ет кли­ен­ту про­то­ко­лы шиф­ро­ва­ния, с кото­ры­ми он уме­ет рабо­тать. Если кли­ент тоже уме­ет рабо­тать с ними — всё отлич­но, идём дальше.
  • Сер­вер и кли­ент с помо­щью крип­то­гра­фи­че­ской магии уста­нав­ли­ва­ют защи­щён­ное соеди­не­ние, кото­рое невоз­мож­но взло­мать или изме­нить (как они сами думают).
  • Теперь у каж­дой сто­ро­ны есть сек­рет­ный ключ, кото­рым зашиф­ро­вы­ва­ет­ся и рас­шиф­ро­вы­ва­ет­ся каж­дое сообщение.

Если всё про­шло штат­но, то при самом пер­вом под­клю­че­нии сер­вер при­шлёт в ответ что-то вро­де этого:

The authenticity of host ‘ ()’ can’t be established.

ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.

Are you sure you want to continue connecting (yes/no)? yes

Здесь сер­вер спра­ши­ва­ет, точ­но ли мы хотим уста­но­вить это соеди­не­ние. Если да — вво­дим в ответ yes. Это зна­чит, что мы полу­чи­ли уни­каль­ный «отпе­ча­ток паль­цев» для наше­го соеди­не­ния. Теперь, когда поме­ня­ют­ся настрой­ки SSH-сервера или его пол­но­стью пере­уста­но­вят, отпе­ча­ток уже не сов­па­дёт и кли­ент будет бить тре­во­гу. Всё для того, что­бы сде­лать соеди­не­ния более без­опас­ны­ми в будущем.

Передача ключей не root-пользователю

Ключами может пользоваться и другой пользователь. Скопируем файл закрытого ключа (id_rsa) и файл настроек config в каталог /home/username/.ssh.

Хоть это и необязательно, но на всякий случай зададим права для каталога .ssh и файлов в нем.

chmod 700 /home/username/.ssh chmod 600 /home/usename/.ssh/*

Пробуем подключиться (настроенные алиасы тоже работают).

ssh techlist

Соглашаемся и добавляем соединение в known_hosts.

Are you sure you want to continue connecting (yes/no)? yes

Все должно работать. Если вдруг вы видите следующую ошибку — Permission denied (publickey), то тогда в файле config нужно указать пользователя от имени которого устанавливается соединение, если он не был указан ранее.

Host techlist HostName Port 20000 User root

Как я писал выше, если пользователь не указан, то соединение происходит от имени текущего пользователя и вполне возможно что пользователя с таким именем на удаленной машине нет.

На этом все. До встречи.

Настройка SSH авторизации по ключу в PuTTY

Если ключ id_rsa сгенерирован в Linux, нужно перевести его в формат .ppk с помощью утилиты PuTTYgen. Открываете утилиту PuTTYgen, выбираете меню Conversion -> Import key. Выбираете свой файл id_rsa и нажимаете Save private key:

Для авторизации по ключу в PuTTY укажите расположение ключа в меню Connetction -> SSH -> Auth -> Private key file for authentication.

Настройка SSH авторизации по ключу в PuTTY

Сохраните подключение.

Теперь при подключении вам нужно будет вводить не пароль пользователя системы, а пароль от вашего ключа. Удобство заключается в том, что можно создать один публичный ключ и разместить его на десятке серверов. Теперь вместо того, чтобы помнить 10 разных паролей, достаточно помнить всего один и хранить его и секретный ключ в надёжном месте, исключающем доступ посторонних лиц.

Использование ключей для авторизации не отменяет ввода пароля пользователя при вызове команды sudo!

Настройка SSH авторизации по ключу в PuTTY

Любое использование материалов сайта возможно только с разрешения автора и с обязательным указанием источника.

Безопасность

Для повышения безопасности администратору сервера следует воспользоваться некоторым советами:

  • Используйте пару приватный + публичный ключ вместо пароля. Таким образом, пароль, который можно украсть, нигде применяться не будет, а соединение может быть установлено только с конкретного компьютера-клиента.
  • Применяйте только надежные длинные пароли, которые невозможно подобрать по словарю.
  • Запретите соединение на сервере для пользователя root.
  • Поменяйте SSH-порт на сервере с 22 на какое-то другое значение.
  • Регулярно проверяйте в Log-файлах сервера, откуда (с каких IP-адресов) были установлены соединения по SSH.

Отключение проверки пароля

Если пароль больше не будет использоваться, то для увеличения безопасности системы лучше его вовсе отключить. Но убедитесь, что ключ надежно сохранен и вы его не потеряете, потому что по паролю вы больше не войдете. Авторизуйтесь на сервере, затем откройте конфигурационный файл /etc/ssh/sshd_config и найдите там директиву PasswordAuthenticatin. Нужно установить ее значение в No:

sudo vi /etc/ssh/sshd_config

Теперь сохраните файл и перезапустите службу ssh:

Отключение проверки пароля

sudo service ssh restart

Дальше будет возможно только подключение по ключу ssh, пароль не будет приниматься.