Найти в Дзене
ИТ Проповедник

Команды к видео "Настройка SSH - Аутентификация по ключу"

Видео "Настройка SSH - Аутентификация по ключу" Ассиметричное шифрование. На своем компьютере вы должны создать публичный и приватный ключи, например, для алгоритма RSA. Затем копируете публичный ключ на удаленный сервер (к которому нужно получать доступ) в скрытую папку ~/.ssh в файл authorized_keys, папка должна находиться в домашнем каталоге той учетной записи под которой будет осуществляться вход на удаленный сервер. При подключении по SSH вы должны указать какой приватный ключ использовать для аутентификации. У каждого пользователя должна быть своя пара приватного и публичного ключа. Создаем пару ключей: Минимальный размер ключа - 2048 admin1@host1:~$ ssh-keygen ------------------------------------ Enter file in which to save the key (/home/admin1/.ssh/id_rsa): указываем свой путь хранения ключа (полный путь) или оставляем путь по умолчанию ------------------------------------ Enter passphrase (empty for no passphrase): Указать парольную фразу или не указывать, она является защит

Видео "Настройка SSH - Аутентификация по ключу"

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

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

При подключении по SSH вы должны указать какой приватный ключ использовать для аутентификации.

У каждого пользователя должна быть своя пара приватного и публичного ключа.

Создаем пару ключей:

Минимальный размер ключа - 2048

admin1@host1:~$ ssh-keygen

------------------------------------

Enter file in which to save the key (/home/admin1/.ssh/id_rsa):

указываем свой путь хранения ключа (полный путь) или оставляем путь по умолчанию

------------------------------------

Enter passphrase (empty for no passphrase):

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

-------------------------------------

admin1@host1:~$ cd .ssh

admin1@host1:~/.ssh$ ls -l

итого 12

-rw------- 1 admin1 admin1 1766 янв 6 17:27 admin1

-rw-r--r-- 1 admin1 admin1 394 янв 6 17:27 admin1.pub

-rw-r--r-- 1 admin1 admin1 444 янв 6 17:14 known_hosts

-------------------------------------------------------

Копируем публичный ключ на удаленный сервер host2 в домашний каталог пользователя user1:

admin1@host1:~/.ssh$ ssh-copy-id -i admin1.pub user1@host2

/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "admin1.pub"

/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

user1@host2's password:

Number of key(s) added: 1

Now try logging into the machine, with: "ssh 'user1@host2'"

and check to make sure that only the key(s) you wanted were added.

----------------------------------------------------------------------------

Подключаемся к удаленному серверу host2:

admin1@host1:~/.ssh$ ssh -i admin1 user1@host2

Enter passphrase for key 'admin1':

Last login: Sat Jan 6 17:32:32 2024

--------------------------------------------------------------------

Можно выполнять команды на удаленном сервере не подключаясь к нему:

admin1@host1:~/.ssh$ ssh -i admin1 user1@host2 "ip a"

Enter passphrase for key 'admin1':

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

inet 127.0.0.1/8 scope host lo

valid_lft forever preferred_lft forever

inet6 ::1/128 scope host

valid_lft forever preferred_lft forever

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000

link/ether 00:0c:29:79:65:2a brd ff:ff:ff:ff:ff:ff

inet 10.28.0.156/24 brd 10.28.0.255 scope global dynamic noprefixroute eth0

valid_lft 1511sec preferred_lft 1511sec

inet6 fe80::5f51:141f:4276:75c8/64 scope link noprefixroute

valid_lft forever preferred_lft forever

--------------------------------------------------------------------------------

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

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

admin1@host1:~/.ssh$ eval `ssh-agent -s` - запустить агент

admin1@host1:~/.ssh$ ssh-add admin1 - агент запоминает парольную фразу

Enter passphrase for admin1:

Identity added: admin1 (admin1)

Проверяем, что ключ добавлен в агент ssh

admin1@host1:~/.ssh$ ssh-add -l

2048 SHA256:fOC8za4ESr8CZimN3SOfQMHmzrIKuL3oy6kq0BLdThE admin1 (RSA)

ssh -i admin1 user1@host2 - подключение должно произойти без запроса парольной фразы

Удаление всех ключей из агента ssh

admin1@host1:~/.ssh$ ssh-add -D

All identities removed.

-----------------------------------------------------

Запрещаем на стороне сервера host2 аутентификацию по паролю:

admin1@host2:~/.ssh$ sudo vim /etc/ssh/sshd_config

в строке

#PasswordAuthentication yes

убираете "#" и "yes" меняете на "no"

Перечитываете конфиг sshd:

admin1@host2:sudo systemctl reload sshd

Пробуем войти по паролю на удаленный сервер host2

admin1@host1:~/.ssh$ ssh user1@host2

Permission denied (publickey).

-----------------------------------------------------------------------

Если нужен некий аналог путти с сохранением подключений:

Создаем файл config в папке ~/.ssh и описываем свои подключения к разным серверам

admin1@host1:~/.ssh$ vim config

Host Server_WEB
HostName 10.28.0.156
User admin1
Port 22
IdentityFile ~/.ssh/admin1

admin1@host1:~/.ssh$ ssh Server_WEB

Enter passphrase for key '/home/admin1/.ssh/admin1':

Last login: Sat Jan 6 18:14:12 2024

--------------------------------------------------------------------------

Копирование файлов по ssh на удаленный хост:

С аутентификацией по ключам

admin1@host1:~/.ssh$ scp -i admin1 config admin1@host2:/home/admin1

С аутентификацией по паролю

admin1@host1:~/.ssh$ scp admin1.pub admin1@host2:/home/admin1

admin1@host2's password:

admin1.pub

С использованием config

admin1@host1:~/.ssh$ scp known_hosts Server_WEB:/home/admin1

Enter passphrase for key '/home/admin1/.ssh/admin1':

known_hosts

Копирование каталога на удаленный хост:

admin1@host1:~/.ssh$ scp -r ~/Загрузки/ admin1@host2:/tmp

admin1@host2's password:

--------------------------------------------------------------------

Запуск графического приложения на удаленном хосте с перенаправлением вывода на локальный хост

admin1@host1:~/.ssh$ ssh -X admin1@host2 kcalc