Настройка аутентификации на основе ssh-ключей

Ssh авторизация по сертификатам через putty

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

Чтобы безопасно войти на другой компьютер без пароля, у вас должен быть SSH-ключ. Возможно, у вас уже есть SSH ключ, но создание нового не повредит. SSH ключ начинает свою жизнь на вашей локальной машине. Он состоит из двух компонентов: закрытого ключа, которым вы никогда ни с кем не обмениваетесь, и открытого ключа, который вы копируете на любую удаленную машину, к которой хотите иметь доступ без пароля.

Некоторые люди создают один SSH-ключ и используют его для всего, начиная от удаленного входа и заканчивая GitLab-аутентификацией. Однако я использую разные ключи для разных групп задач. Например, использовать один ключ дома для аутентификации на локальных машинах, другой — для аутентификации на веб-серверах, отдельный — для Git-хостов, другой — для Git-репозиториев и так далее. В этом примере создадим уникальный ключ, который будет использоваться на компьютерах в локальной сети.

Чтобы создать новый SSH-ключ, используйте команду ssh-keygen:

$ ssh-keygen -t ed25519 -f ~/.ssh/lan

Опция -t обозначает тип и гарантирует, что шифрование, используемое для ключа, будет выше, чем по умолчанию. Опция -f обозначает файл и устанавливает имя и расположение файла ключа. Вам будет предложено создать пароль для вашего SSH ключа. Вы должны создать пароль для ключа. Это означает, что вам придется ввести пароль при использовании ключа, но этот пароль остается локальным и не передается по сети. После выполнения этой команды у вас останется закрытый SSH-ключ, называемый lan, и открытый SSH-ключ, называемый lan.pub.

Чтобы передать открытый ключ на вашу удаленную машину, воспользуйтесь ssh-copy-id. Чтобы это сработало, вы должны убедиться, что у вас есть SSH доступ к удаленному компьютеру. Если вы не можете войти на удаленный хост с паролем, вы также не можете настроить вход без пароля:

$ ssh-copy-id -i ~/.ssh/lan.pub test1@10.1.1.5

Во время этого процесса вам будет предложено ввести пароль для входа в систему на удаленном хосте.

После успешного завершения процесса, попробуйте войти в систему еще раз, но на этот раз, используя опцию -i, введите в команду SSH соответствующий ключ (lan, в данном примере):

$ ssh -i ~/.ssh/lan test1@10.1.1.5
bash$ whoami
test1

Как только вы настроите аутентификацию без паролей, необходимо отредактировать файл /etc/ssh/sshd_config, чтобы запретить аутентификацию с помощью паролей. Это не позволит никому использовать SSH для входа на компьютер, если у него нет вашего личного ключа. Для этого откройте /etc/ssh/sshd_config в текстовом редакторе с правами sudo и найдите строку PasswordAuthentication. Измените строку по умолчанию на эту:

PasswordAuthentication no

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

Сохраните файл и перезапустите SSH-сервер (или просто перезагрузите компьютер):

$ sudo systemctl restart sshd && echo "OK"
OK
$

Основные команды PuTTY

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

ls — предназначена для вывода файлов, содержит в себе набор команд:

  • ls -la — выводит различные документы и показывает права доступа, включая имя создателя и владельца;
  • ls -lha — также выводит файлы, но показывает размер файла в байтах;
  • ls -lha | less — используется для постраничного просмотра документов.

cd — необходима для перемещения между директориями, например, cd перенаправляет пользователя в указанную папку, cd../ перемещает в верхний уровень, cd ~ открывает корневую папку.

echo — позволяет перемещать текст в файл. Например, если нам требуется создать новый текстовый документ или добавить текст в уже созданный файл, достаточно ввести «echo Привет, мир! >> new.txt».

sudo — наиболее используемая команда, означающая «SuperUser Do». Она позволяет выполнять любые команды от имени администратора.

df — дает возможность увидеть доступное дисковое пространство в каждом из разделов операционной системы. Синтаксис: df .

mv — используются для переименования файлов и перемещения их в другую директорию. Синтаксис: mv .

rm — если нужно удалить файлы или директорию целиком, то используйте эту команду. Синтаксис: rm .

cp — для копирования файлов и целых директорий воспользуйтесь этой строчкой. Синтаксис: cp .

mc — предназначена для запуска файлового менеджера Midnight Commander, который позволяет работать с файлами по FTP внутри консольного окна.

cat — наиболее популярная команда в Linux, позволяющая считывать данные из файлов и выводить их содержимое. Наиболее простой способ отображения содержимого в командной строке. Синтаксис: cat .

mkdir — позволяет создать одну или несколько директорий с указанным именем. Например, mkdir mdir1 mdir2 mdir3 добавит сразу 3 директории.

chmod — изменяет права доступа к файлам и каталогам. Синтаксис: chmod .

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

touch — используется для создания любого типа файлов: от пустого txt до пустого zip. Синтаксис: touch .

man и —help — нужны для того, чтобы узнать информацию о команде и о том, как ее можно использовать (man). Например, «man cat» покажет доступную информацию о команде cat. Ввод имени команды и аргумента помогает показать, каким образом можно использовать команду, например, cd –help.

locate — предназначена для поиска файла в системе Linux.

Это была лишь небольшая часть команд, которые можно использовать при подключении по SSH. Если вы только начинаете изучать основы администрирования серверов, то этого списка будет достаточно.

ssh-copy-id

Я предпочитаю использовать с флагом -i и задавать путь до нужного ключа

sudo ssh-copy-id -i ~/.ssh/andrei-key.pub andrei@192.168.0.2

/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: «/home/andrei/.ssh/andrei-key.pub»
The authenticity of host ‘192.168.0.2 (192.168.0.2)’ can’t be established.
ECDSA key fingerprint is SHA256:abcdefgh1234567890abcdefgh1234567890abc+def.
Are you sure you want to continue connecting (yes/no/)?

Введите yes

Are you sure you want to continue connecting (yes/no/)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed — if you are prompted now it is to install the new keys
andrei@192.168.0.2’s password:

Введите пароль

Number of key(s) added: 1

Now try logging into the machine, with: «ssh ‘andrei@192.168.0.2′»
and check to make sure that only the key(s) you wanted were added.

Теперь на хосте 192.168.0.2 в файле
/home/andrei/.ssh/authorized_keys
появилась новая запись вида

ssh-rsa AAAAB3NzaC1y … lseP/jXcq … Uydr/2CwQ &hellip ++TpY19pHqD/AnhL … Az62T/Ipyx … 8U2T andrei@host.andrei.com

Знак … заменяет длинные последовательности случайных символов для экономии места.

Проверить ключ можно командой

ssh -i ~/.ssh/mykey user@host

В нашем случае

ssh -i ~/.ssh/andrei-key andrei@192.168.0.2

Если вы не задавали пароль для ключа, то попадёте на удалённый хост без лишних движений

Last login: Sun Jan 10 16:48:27 2021 from 192.168.0.1

Добавление пароля

При создании виртуальной машины в пункте Дополнительные возможности активируйте опцию Пользовательские данные. Откроется окно, куда можно вписать скрипт для обработки cloud-init агентом, запущенным на виртуальной машине.

Впишите в поле код:

#cloud-config
password: ваш пароль
chpasswd: { expire: False }
ssh_pwauth: True

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

Пароль не обязательно добавлять в явном виде, можно вписать его хэш-сумму (тот же пароль, только преобразованный; машина сможет его считать, а для человека он выглядит как случайный набор символов). Тогда, даже если кто-то попадёт в систему, то всё равно не узнает пароль — внутри будет храниться хэш-сумма. А система даст войти только по паролю. Для генерации хэш-суммы вы можете воспользоваться скриптом на Python:

#!/usr/bin/env python3
# based on https://stackoverflow.com/a/17992126/117471
# pip3 install passlib
import sys
from getpass import getpass
from passlib.hash import sha512_crypt
passwd = input() if not sys.stdin.isatty() else getpass()
print(sha512_crypt.hash(passwd , rounds = 5000 ))

Настройка PuTTY для аутентификации по публичному ключу (без пароля) на SSH сервере

Подробности
Просмотров: 13237

Работая со многими серверами с одного компа порой начинаешь замечать, что вводить пароль каждый раз как-то напряжно. Хочется, чтобы щёлкнул и вошёл. И это есть возможно, благодаря механизму публичных и приватных ключей SSH. Но перед тем как читать дальше запомните важную вещь: безпарольная авторизация образует брешь в безопасности всей системы, поэтому рекомендуется over 9000 раз подумать перед тем как настраивать это. Рекомендуется такую авторизацию применять только на компе личного пользования, для уверенности что посторонние не получат ваш приватный ключ.

Работает это так: у Вас на компе есть приватный ключ, который очень важный в плане безорасности и его нельзя передавать третьим лицам; на сервере есть соответственный вашему приватному публичный ключ, который используется для подтверждения аутентичности. Публичный ключ не так критичен, его можно в открытую передавать и ничего страшного не случится, разве что злоумышленник разрешит Вам войти на свой сервер без пароля.

Ну вот так приблизительно. Для начала нужно сгенерировать себе приватный ключ. Для этого в пакете PuTTY есть программа PuTTYgen. Запускаем её, по желанию выбираем длину и тип ключа. Нажимаем «Generate».

Далее просто водим мышкой по свободному пространству под полоской пока она не заполнится. От движений мыши оно берёт энтропию для генерации ключа.

Когда генерация завершится мы увидим публичный ключ. По желанию можно изменить коментарий к ключу в поле «Key comment». Берём и копируем содержимое поля «Public key for pasting into OpenSSH authorized keys file» в пустой текстовый файл. Перевод строки в конец не добавляем, это не нужно. Файл пока сохраняем, например с именем my_key.pub.

Далее нажимаем кнопку «Save private key» и выбираем место для сохранения файла с приватным ключом (расширение *.ppk). Напоминаю, что третьим лицам этот файл передавать нельзя иначе нету смысла в защите.

Тепер заливаем файл с публичным ключом на сервер (а сервер у нас ясное дело на Linux). Добавляем наш публичный ключ к перечню авторизированных (обычно это файл .ssh/authorized_keys в домашнем каталоге пользователя, за которого мы хотим войти).

$ cat my_key.pub >> ~/.ssh/authorized_keys$ echo >> ~/.ssh/authorized_keys

Сервер готов. Тепер у себя в настройках PuTTY в Connection -> SSH -> Auth -> Private key file for authentication указываем путь к файлу *.ppk, в котором находится сгенерированный нами ключ.

Вот собственно и всё. Максимум, что спросят при входе — это имя пользователя, но его тоже можно указать в настройках и не вводить. Тепер процесс входа значительно облегчился.

  • < Назад
  • Вперёд >

Возможности PuTTY

Программа обладает широким функционалом.

Важным преимуществом является поддержка разных версий SSH-протокола, что обеспечивает передачу данных через защищённое соединение, дистанционный запуск программ, сжатие файлов для быстрой передачи, передачу шифрованного трафика между портами разных машин. Также возможно перенаправление портов через протокол SSH.

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

PuTTY работает с SSH-ключами, которые считаются более надёжной альтернативой паролям, поскольку злоумышленники не могут их использовать, чтобы получить доступ к данным. Более того, возможна аутентификация через ключ, который находится на удаленном компьютере. Дополнительно можно работать с алгоритмами шифрования.

В программе присутствуют встроенные клиенты SCP и SFTP — защищённые протоколы для безопасной передачи файлов. Однако возможности SCP ограничены функцией копирования.

Возможно соединение через proxy. PuTTY поддерживает xterm, ECMA-48 и VT-102. Допустимо подключение по IPv6.

Шаг 3: Подключение по SSH, сохранение сессии и данных авторизации

  1. Для подключения по протоколу SSH откройте вкладку «Session», которая расположена в самом верху дерева опций. Увидите следующую картину:
    Первым делом убедитесь, что отмечен пункт «SSH». Далее в поля «Host Name» и «Port» пропишите имя или IP-адрес сервера и порт подключения соответственно.
  2. Нажмите на кнопку «Open» внизу окна программы.
    Появится предложение добавить ключ сервера в список доверенных, нажмите «Да».
  3. Далее переходим к открывшемуся окну консоли. В него следует вручную ввести логин и пароль для подключения к серверу.

  4. После ввода пароля подключение к серверу будет установлено, и вы сможете полноценно работать.

Сохранение сессии

Если требуется часто подключаться к одному и тому же серверу, сессию можно сохранить, чтобы не вводить постоянно адрес и порт. Делается это следующим образом:

  1. Проделайте действия из шага 1 предыдущего этапа, но на этот раз обратитесь к блоку настроек «Saved Sessions». Введите в соответствующее поле любое подходящее имя.
  2. Далее воспользуйтесь кнопкой «Save».
  3. В списке сохранённых сессий появится запись с введённым ранее именем. Для загрузки просто выделите эту сессию и нажмите «Load».

Авторизация по ключу

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

  1. Найдите в меню «Пуск» папку ПуТТИ, в которой откройте средство PuTTYgen.
  2. Убедитесь, что переключатель режима шифрования находится в положении «RSA», и нажимайте «Generate».
  3. В процессе создания ключа утилита попросит вас поводить мышкой и нажать случайную клавишу на клавиатуре – это требуется для генерации информационной энтропии. После создания последовательности нажмите на кнопки «Save Public Key» и «Save Private Key».
    Также по желанию можно задать пароль для доступа к частному ключу, в противном случае при нажатии на соответствующую кнопку появится предупреждение.
  4. Для использования ключа его потребуется переместить в файл . Для этого вводите следующие команды:

    Если такой папки нет, её следует создать командой:

  5. Далее создайте требуемый файл, команды следующие:

  6. Вставьте в конец созданного файла данные из публичного ключа, полученного в PuTTYgen.
  7. Напоследок задайте права доступа к файлу с ключом и его каталогу:

  8. Далее запустите PuTTY и в дереве опций откройте настройки «Connection» – «SSH» – «Auth». Воспользуйтесь кнопкой «Browse» в позиции «Private key file for authentification» и выберите в диалоговом окне «Проводника» частный ключ, созданный на шаге 3.
  9. Сохраните параметры подключения, затем заново подсоединитесь к серверу. Авторизуйтесь на нём, введя логин. Если всё сделано правильно, сервер вместо запроса пароля будет использовать частный ключ, находящийся на клиентской машине, и публичный ключ, который находится на самом сервере.

Заключение

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

Как пользоваться PuTTY

1. Интерфейс программы

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

Рассмотрим за что отвечают те или иные вкладки программы, чтобы вы ориентировались что и где искать. У нас есть четыре вкладки:

  • Session — отвечает за подключение удаленному серверу, тут мы вводим параметры подключения, порт, адрес, а также можем сохранить все настройки putty, чтобы не настраивать каждый раз заново.
  • Terminal — позволяет включать или отключать возможности терминала;
  • Window — настройка внешнего вида окна, цвет, шрифт, кодировка;
  • Connection — настройка параметров подключения, алгоритма шифрования, сжатия, ключей аутентификации, X11 и других параметров.

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

2. Подключение к удаленному компьютеру PuTTY

Чтобы подключиться к удаленному компьютеру по SSH перейдите на вкладку «Session», здесь, в поле «Host Name» необходимо прописать ip адрес или имя хоста, компьютера, к которому вы хотите подключиться, в поле порт — нужно указать порт, на котором запущен SSH сервер, по умолчанию используется порт 22:

Далее, нажмите кнопку «Open». После этого появится запрос на добавление ключа сервера в список доверенных ключей, нажмите «Да»:

Затем вам будет нужно ввести логин пользователя и пароль

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

Теперь авторизация прошла успешно, и вы можете выполнять нужные действия на сервере:

3. Сохранение сессии PuTTY

Чтобы не вводить каждый раз ip и порт можно сохранить эти данные в виде сессии, для этого пропишите новое имя в поле «Saved Sessions», а затем нажмите кнопку «Save»:

Теперь вы сможете загрузить сохраненную сессию, нажав кнопку «Load».

После того как будет завершена настройка putty и все параметры будут выставлены правильно вы можете сохранить настройки и не вводить их несколько раз.

4. Имя пользователя по умолчанию

Вы можете не вводить имя пользователя каждый раз, для этого перейдите на влкадку «Connection», затем «Data» и в поле «Auto-login Username» пропишите имя пользователя, например, root:

Теперь подключение putty будет выполняться от имени этого пользователя.

5. Авторизация по ключу ssh в PuTTY

Чтобы не вводить каждый раз пароль можно настроить авторизацию по ключу. В Linux такая возможность используется очень широко потому что это удобно. Первым делом необходимо создать ключ. Для этого запустите утилиту PuTTYgen и установите переключатель в положение «SSH-2 RSA» нажмите «Generate»:

Обязательно ключ должен быть SSH-2 RSA, если в главном окне нет, выберите в меню «Key». Подвигайте мышкой, чтобы создать достаточное количество энтропии:

Ключ готов, затем, с помощью кнопок «Save Public Key» и «Save Private Key» сохраните оба ключа.

Далее, откройте PuTTY, перейдите на вкладку «Connection», затем «SSH», затем «Auth»:

Здесь необходимо нажать кнопку «Browse» и добавить недавно сохраненный приватный ключ:

Далее, возвращаемся на вкладку «Session», выбираем наше сохранение и нажимаем «Save» чтобы сохранить настройки. Осталось только отправить наш открытый ключ на сервер. Для этого авторизуйтесь на нем с помощью пароля и открытый ключ вставьте ключ в конец файла /root/.ssh/authorized_keys.

Ключ можно брать прямо из окна PuTTYgen «Public key for pasting» или из файла открытого ключа:

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

5. Передача файлов через scp в PuTTY

Не все знают, но PuTTY позволяет передавать файлы через ssh также как это делает linux с помощью утилиты scp. Нажмите Win+R, затем пропишите cmd, чтобы запустить командную строку.

Синтаксис утилиты pcsp выглядит следующим образом:

pscp опции путь_файлу имя_пользователя@хост/путь/к/файлу/на/удаленном/хосте

Например, мы можем отправить файл из текущей папки в папку пользователя /root/:

С помощью опции -P можно задать удаленный порт:

А опция load позволяет загрузить сохраенные настройки сессии PuTTY:

Теперь вы знаете как использовать putty для передачи файлов.

Генерация SSH-ключей в Linux/MacOS/Windows 10

Чтобы сгенерировать ключи на Linux/MacOS/Windows 10:

1. Откройте консоль, терминал (MacOS) или командную строку (cmd.exe) для Windows 10.

2. Выполните команду:

ssh-keygen -t rsa -b 2048

3.Укажите название ключа в строке «Enter file in which to save the key».

Внимание! Если не указывать директорию (например, «.ssh/» ), ключи сохранятся в «~./» (для Linux/MacOS) или в «C:\Users\\» (для Windows 10). 4

Нажмите Enter

4. Нажмите Enter.

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

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

7. Ключ создан в директории по умолчанию или в той, которую вы прописали. 

8. Публичная часть ключа будет сохранена в файле «<имя_ключа>.pub». Используйте его для последующего добавления к виртуальной машине. Файл можно открыть в текстовом виде в приложении «Блокнот».

Генерация SSH-ключей в личном кабинете сервиса Облако

Для создания SSH-ключа из личного кабинета следуйте описанным ниже шагам.

1. В личном кабинете перейдите в раздел Ключи SSH.

2. Нажмите Сгенерировать ключ.  

3. Введите название ключа и нажмите Создать SSH ключ. 

Важно! Допускается использование символов только латинского алфавита, нижнего подчеркивания, пробелов и точек. Длина имени должна быть от 3 до 63 символов

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

5. Для просмотра закрытого ключа найдите его на устройстве и откройте с помощью приложения «Блокнот».

[edit] Основные команды

<command> -h                 Флаг -h почти всегда отображает справку по команде. Используйте его!
ls                           Показать содержимое текущего каталога
cd <directory or full path>  Сменить текущий каталог
cp <source> <destination>    Копировать файл <source> в место назначения <destination>
cp -r <source> <destination> Копировать каталог <source> в <destination>
mv <source> <destination>    Переместить файл <source> в <destination>
mkdir <directory name>       Создать новый каталог <directory name>
wget <URI>                   Скачать файл <URI> в текущий каталог
tar -xz -f <file>            Распаковать файл *.tgz или *.tar.gz
rm <file>                    Удалить файл <file>
rm -r <directory>            Удалить каталог и всё его содержимое
killall <program name>       Убить все запущенные процессы программы
ps                           Показать запущенные процессы
top                          Показывать запущенные процессы в графическом интерфейсе

Left pane configuration options

More options can be found in the left pane titled Category. Select a category from the tree, and the right pane will change to show configuration options for that category. The initally shown options belong to the Session category.

Only the more relevant options are described here. There are lots of options, and most of them would never be used.

Terminal options

The options in this category influence terminal emulation and keyboard mappings. They are largely self-explanatory, and will not be covered here. Very few people need to touch these. Some people may change how the bell character is handled; people using exotic operating systems might change what is sent by the backspace or delete character.

Window options

The window options influence the appearance and behavior of the terminal window. It can also specify how characters are translated on output and to select fonts and colors for the window.

Понравилась статья? Поделиться с друзьями:
Wi-Fi Роутер
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: