ssh авторизация по ключам на winodws

На Windows 10 можно использовать Linux консоль. Это упрощает работу с вашим сервером:
− не нужно использовать сторонние программы.
− доступно много стандартных linux команд и программ.
− большенство руководств подходят windows пользователям.
− все ошибки легко гуглятся.

Но из-за работы на windows много шансов, что всё пойдёт не так. Делее простое руководство к действию.

Устанавливаем Linux

⚠️ У вас должно быть установлено Windows обновление 16215 или более поздние.

⚠️ Дальше всё будет делаться на основе дистрибутива Ubuntu. Если вы поставите другую систему, то могут быть отличия.

Полная инструкция по установке от Microsoft.

Запускаем Bash

Открываем консоль: жмём Win+R вводим cmd. В консоли пишем:

bash

Всё мы в линуске, дальше работаем из консоли.

Генерируем ключи авторизации

Создадим директорию для ssh в родительском каталоге:

mkdir ~/.ssh

⚠️ Если вы уже использовали ssh то папка существует — вы увидите предупреждение.

Перейдём в папку .ssh:

cd ~/.ssh

Сгенерируем ключ:

ssh-keygen -t rsa -b 4096 -f Имя_нового_ключа

⚠️ Можно не указывать имя ключа (аргумент -f). Но это неудобно в будущем.

В процессе генерации вам предложат придумать пароль ключа или оставить его пустым

Enter passphrase (empty for no passphrase):

⚠️ Пароль придётся вводить каждый при ssh авторизации, ключ без пароля бесполезен — делайте выводы.

Копируем ключ на сервер

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

ssh-copy-id -i Имя_ключа.pub Пользователь_на_сервере@IP_или_домен_сервера

⚠️ Если вы не указывали имя ключа при его создании, то он получил имя по умолчанию: id_rsa

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

Конфиг для входа на сервер

Для удобства напишем конфиг для быстрого входа на сервер.
Создадим файл конфигурации:

nano ~/.ssh/config

Откроется консольный редактор текста nano.

В конфиг пишем:

Host superserver		← Любое удобное имя для команды входа на сервер
HostName 228.122.11.123		← ip или доменное имя вашего сервера 
User super			← Имя пользователя на сервере
IdentityFile ~/.ssh/keyName	← Имя ключа для пользователя 
Port 22				← Порт на сервере, по умолчанию 22

В конфиге можно создать несколько конфигураций для быстрого входа. Например для входа под рутом и рядовым пользователем:

Host superserver		← Простой вход на сервер
HostName 228.122.11.123
User super
IdentityFile ~/.ssh/keyName
Port 22

Host superserver-root		← Вход на сервер под рутом
HostName 228.122.11.123
User root
IdentityFile ~/.ssh/keyName
Port 22

Закроем редактор, жмём F2
Вам предложат сохранить файл и спросят нужно ли менять имя —оставляем как есть.

Пробный вход

Теперь войдём на сервер под обычным пользователем. Пишем в консоль:

ssh superserver

⚠️ Если создали ключ с паролем, вас попросят ввести пароль.

Или войдём под рутом:

ssh superserver-root

Что-то пошло не так

Распространённые ошибки
Как правило, большинство проблем связано с доступом к файлам. Возможно вы правили или создавали файлы не из консоли, а используя проводник — линукс их не видит. Проверим видимость файлов, пишем в консоль:

ls ~/.ssh -A

Вывели список файлов в папке .ssh (аргумент -A для показа скрытых файлов).

Исправим.
Для начала выйдите из линукса и войдите снова:

exit
bash

Попробуйте ещё раз посмотреть что видит линукс в папке .ssh

Теперь исправим права доступа.
Пропишем правильные права сразу всем файлам в папке .ssh:

find ~/.ssh -type f -print -exec chmod 600 {} \;

⚠️ Не забывайте: вы должны быть в bash

Что то не так при использовании команды ssh
Посмотрите логи, для этого используйте аргумент -vt он выведет лог в процессе работы ssh:

ssh -vt superserver

Дальше внимательно читайте и гуглите ошибки, всё решаемо.

Поделиться
Отправить
Ваш комментарий
адрес не будет опубликован

ХТМЛ не работает

Ctrl + Enter
Популярное