вторник, 26 ноября 2019 г.

Авторизация по ключу в SSH на Linux: не одними паролями живем

     Что такое SSH мы слава богу уже знаем и знаем как делать с помощью него туннели, но это не все что он может. В SSH есть два способа аутентификации пользователя: 1) пароль, который знаем и 2) ключ, о котором и поговорим.
     Плюсы ключа выходят из минуса пароля:
1) Он прост, хоть и по шифрованному каналу
2) его все же можно перехватить
3) использование в скрипах(об этом розже)

Описание из интеренета:

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

Нашел такую картинку, очень хорошо иллюстирующую процесс:



Перво наперво, делаем ключ:

[root@ПК ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:adW9C/air7tW6NMiSIHxrN27b0hUFfFytoM1Cj+z8BY root@homer-server
The key's randomart image is:
+---[RSA 2048]----+
|           .+o   |
|    .     .. o   |
|     =   .o o B  |
|    . + .o o B + |
|     o +S ..E +  |
|    . o.o .+.B o |
|     . o + o= o  |
|      . + *o..   |
|        .**B.    |
+----[SHA256]-----+


Можно все пройти enter-ом и в конце получить ключ, который смотрим:

Приватный:

[root@ПК ~]# cat ~/.ssh/id_rsa
-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEAuXxDUWdZEACvPBfJZrro/1QFcUibSVx+ZqA+0WbPmYsq7P7I
pRzsAR9IW3xsdDMM+pzPNPsLwQZsiuIKYI9Xdtg+DgpoGgmhSxB3LwrC8IqNodPA
zFQSNNR/w7ayKklrQreHu40/P/EfY0pb/DbNURYcJKHPjwW2AKpQYIYScoOaYXiN
bf7/orjUqadsrqJbCOe/VgruL3YAAaBfgtk87EMsd3T2ic9qlG0s05fRAB5AwRkE
W9IfWraxV1u1vyfSA9uxP9A/W5hv7dlsVMhZiVRGIFyvB97Z3p7vFOw4bze/nLXr
ZUS2rpm0XtVoCIOiEwrBWK1J7BZkltGjdHtw+wIDAQABAoIBAHHF1ejtsoSNVu9O
S9w2k8phuEDnX1Ddai765e092eL9qSPbmCknF2AM1y4+oKuZ0ME8RCDkSC5rCVMb
GXBnHCgqtc2Y9ofaFlRb0i9Js48l/YAgyebLPqunGINs4dXsWN2Ag8I3/m7zMOSP
bOLEnqW5ISQbGJxKzXuU/F5ofpI8N6uYqidW7j/YOo+r8EiDfz+850t6SSQ1A6Vn
8gVcjKQUIuHjEBd1TJ07Y+Yxaсчс56JBqWZl5V+layRyZSkIS45AKvuCtVNMIHTC
EwTgaD5Gghcxkak9XQBtR8WpWPAu+BOo72H4WhgIF6Mj06pM7TT9kVO7C4Ajr3am
ctwPRekCgYEA9pd5KvitlhQb9mzushNPECnI2m8j3CPLODtLhFjdFJoxMJ3XtEYI
KXOoXgn4YChy70CZFwANdFYquHn8viE9t27HKsyt3gHJo8ZuO/M7DKlf8CD/cplL
42o5CC/WPCtbXviV2ZIgAp9gzPs8YVzBNXoPBNpaT2j+77ldq7/yK3UCgYEAwI/y
wF8wBP1zRifx6QxJuO8HG7fPw87CcInxfRBUbCBd8F/Liz4LW1Lpstb2YC4dl/qm
Bk8k87vvwJUX8AKm6HDsMXKOhzD6RoqBoEDsohxDlLiR3WEwDgmzkzWMfviu9p+s
el/B7ImiBXv3Yvw5y4saEqyLAw0CVDZpn0jFTK8CgYBfmdogDsk9pg4xO4pO/61n
VsvH487DSh0/b72XUdxkYGMxtgAqo/wGFhDwZG0m2oe0uhagFCUjNUTawHB8Rebn
dstAjJnbuFW0aPnTxDjgb8oCDsj6ZPRG9qelxOYJ7cU+zKFL+JrwaVneHokKNiux
z+CCwSTCJLKxvevS6le5AQKBgEVo3cCXzxBNZ2rHZTxy0HQXvMEx/XMAKTg1kNVa
uIONGy9U6GKVh7Rwa4qqT36VwNcSYxvtFU3B1YbedxVtb0pjwc+FEnkKn3wj2tuv
61v3wihuay2YJaE5v//1EmKGM1L0dVBbCeTAK6W8bIzCi/ahelF23ljILKm8P1BK
A8xDAoGAPB+YW9XmHvWPjR1NHkZqSGcjVhg6hsyJ5fw634RR3SmGhL/Jwknm7cTn
avhGKBBT5U0raJ0mWbMkFpyQcijwZCnwoxJQTupHuoJwqioopxoSFXDCxSjG22OI
LKLTjgkjGRvr6ev1lBh9cRJRVlSDgeV9Ewpwpby0DzAWQg0xHlA=
-----END RSA PRIVATE KEY-----
[root@ПК ~]#


Публичный:

[root@homer-server ~]# cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC5fENRZ1kQAK88F8lmuuj/VAVxSJtJXH5moD7RZs+Ziyrs/silHOwBH0hbfGx0Mwz6nM80+wvBBmyK4gpgj1d22D4OCmgaCaFLEHcvCsLwio2h08DMVBI01H/DtrIqSWtCt4e7jT8/8R9jSlv8Ns1RРрFhwkoc+PBbYAqlBghhJyg5pheI1t/v+iuNSpp2yuolsI579WCu4vdgABoF+C2TzsQyx3dPaJz2qUbSzTl9EAHkDBGQRb0h9atrFXW7W/J9ID27E/0D9bmG/t2WxUyFmJVEYgXK8H3tnenu8U7DhvN7+ctetlRLaumbRe1WgIg6ITCsFYrUnsFmSW0aN0e3D7 root@
ПК
[root@
ПК ~]#

Вцелом, по сути мы и закончили))
Осталось копирнуть ключ на удаленный сервер и все само по себе заработает:

ssh-copy-id {user}@{ip-remote-server}

Если все сделали правильно, то вы увидите нечто вроде, разумеется после ввода пароля:

/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
{user}@{ip-remote-server}'s password:

Number of key(s) added: 1


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

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

sign_and_send_pubkey: signing failed: agent refused operation

ssh-add
Identity added: /home/cherkas/.ssh/id_rsa (/home/cherkas/.ssh/id_rsa)

Все спасибо!

Комментариев нет:

Отправить комментарий

Debian 12 sources.list редактирование и уход от cdrom

     Если после установки постоянно просит диск и ничего с этим не сделать, то идем в сорс-листы и комментим вот такую строчку  cat /etc/apt...