Шпаргалка по openssl/openssh/putty
Систематизируем знания по созданию и конвертации ключей при использовании различных инструментов.
Требуется сгенерировать ключ для доступа по ssh. Всегда нахожу разные способы их сгенерировать и постоянно забываю чем они отличаются.
Инструкция для Linux
openssl
openssl req -x509 -newkey rsa:2048 -keyout openssl-key.pem -out openssl.pub -days 365
Generating a 2048 bit RSA private key...............+++
..........................................+++
writing new private key to 'openssl-key.pem'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.What you are about to enter is what is called a Distinguished Name or a DN.There are quite a few fields but you can leave some blankFor some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:
Email Address []:
x509 - стандарт.
rsa - алгоритм.
2048 - длина ключа.
365 - время действия в днях.
Нужен для генерации сертификатов сайтов. Для ssh бесполезен.
ssh-keygen
ssh-keygen -f ssh-key
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in ./ssh-key.
Your public key has been saved in ./ssh-key.pub.
The key fingerprint is:
SHA256:Aexx4t1BfpFvMkPaOrhBPjt7n7qkNHh6clfkm53eEpg techru@techru-GA-770TA-UD3
The key's randomart image is:
+---[RSA 2048]----+
| .. .. .. |
| +.... o. |
| o =...=.. |
| o o.o.* o |
| oS. + B |
| .= o E . |
| . +=.o + o |
| .+*+o o.+. |
| .+o=o+o....|
+----[SHA256]-----+
По-умолчанию генерирует файлы ~/.ssh/id_rsa
и ~/.ssh/id_rsa.pub
. Ключ -f позволяет указать выходную папку и имя.
SHA256 - цифровая подпись
puttygen
Не установлен в систему в отличии от предыдущих. Установка:
sudo apt install putty-tools
Генерируем приватный ключ(очень долго):
puttygen -t rsa -b 2048 -C "email@host.com" -o putty-key.ppk
++++++++++++++++++++++++++++++++++
++++
+++++
Enter passphrase to save key:
Re-enter passphrase to verify:
И генерируем из него публичный:
puttygen -L putty-key.ppk > putty-key.pub
Каталог со всеми сгенерированными ключами:
-rw-rw-r-- techru 1834 openssl-key.pem
-rw-rw-r-- techru 1229 openssl.pub
-rw------- techru 1766 ssh-key
-rw-r--r-- techru 408 ssh-key.pub
-rw------- techru 1454 putty-key.ppk
-rw-rw-r-- techru 396 putty-key.pub
Каждый ключ состоит из публичной и приватной части.
Pub Keys
openssl
-----BEGIN CERTIFICATE-----
MIIDXTCCAkWgAwIBAgIJAOLR38z/XBbcMA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNV
BAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBX
aWRnaXRzIFB0eSBMdGQwHhcNMTgwMzI3MTAzMzAwWhcNMTkwMzI3MTAzMzAwWjBF
MQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50
ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
CgKCAQEAx6QribExQCj56L5ME6hhZat60DehQ+3v4/84d8/9yPbVBdQm6/DMIk0g
vpToGxqgZHbL2LuFpu8oF7Z2W+BExWwpZ6uLpahFVQ7WapNJDs2y8LwLQ9eB/HID
IlTiafW31vG/RTz8mrRJDBj6D1tDEKCXO0ioOi1WW7hxsZjts6nzDOGordubmlpg
CT6eR1t4/kQbFE6kvq0fqWHd81jFMhCoCok65o2Vc2GbFf4ol+/EcHbXVXVUOuu5
MxKWcNkcd0QQqCZWddUIPTbHlCCHJRDlovBZ62cMcEMAGujH1u0CXu8RAlZfCBpO
8DB8AhuLxXbTlPhkAyeTDwG/DJpD3QIDAQABo1AwTjAdBgNVHQ4EFgQUsrXkYnag
ioktq8uY3FzCASCbFSUwHwYDVR0jBBgwFoAUsrXkYnagioktq8uY3FzCASCbFSUw
DAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAJNsV75qsLTN5lFjevUTm
q4BCvvY89t7l1ck0CuCws/JIP5F/Hp6rjthf50HQZaLyv6q058KUsA1jfU9/yo1O
O4qLl+tNCLUGn6h/ielMf3yuPGToMn9FlFIoMv/LPBAKC4JRG3ftxnC3AKFaDATU
tg3/IgKC6H6+TnCG65wGHXO0oS6ke8VD/uOQ4B5uzShOLqUdDXIMrcpcO7UcyeNv
ZhrkN90LnVi5FVFo58h1TUpoapkfTr72UQ+DcF4Oj2GvHSuMT5OnBZEvu/U1tUGs
jCxx+JzumByKk59sXUd1/8QDBZNPRlEuAlpb5Gz6pwXq1r5Ru5+1Tqscxkb3jTne
SA==
-----END CERTIFICATE-----
openssh
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC4vf1NReESnbYBW7OSKQgE4WI6ZLoKXhQNfcC+eHxmFXXv8E8wYB/0KaKG9yhouDeX+uFeM6XA09lhF8Ju6B8AGsB+ZAc8hQyEHm8ryywAJ+CQAadcpy0w1gf43yLPnUwKhn59WagFMM+Wj60k2jOFAPxnXBqQINkLqqWwUx8otqPgWFOZ5fLt55aT6BjupoUqFZeeeooKH/B+W7GrEteqgjalAVTuRPwCmHfFlINjGweqEbK5vsPzBikrUoO0MuYV9Sj3Vv/XBE96RWz1qrxzLrSrC44+ZsTKgskYuxLs7OBo1ywm+0PHvfty0u9HccIm9mJ7LxKj5xcDmknMCTpb TECHRUMAIN@TECHRUMAIN-PC
puttygen
---- BEGIN SSH2 PUBLIC KEY ----
Comment: "rsa-key-20180326"
AAAAB3NzaC1yc2EAAAABJQAAAQEA50+HtIazHOMaAcL6mxy/6uewc2SYGt1EMRAQ
1J70l7PXyJbmKEjqfCh4EuFWAT6bCz3X01JIaoQXpZXTziPkGvKi4GEdTsELBbHm
xyuCnfidkBf/OryGGmKkR6xkeNZXlx2Cn3pw/p63ApJ0k2f7xg7cJgWZUElBQMsr
nTsEWvjwUZg/IfIFQEnDRgrBBsr50Rp5EsZiDsYmXCtY6of8G31EUag3FNMeL7nm
mCKVwbe7w8+G9P1WPEIDuYPQyEe1vMZBgV/YnLWSEOgYhH1UpeH517s+H89tFj14
KzUcJPsv362bhbAYCJHwXZ+WW3Vlbi7+bmPc2PnTAR4Hi9EoyQ==
---- END SSH2 PUBLIC KEY ----
Private Keys
openssl
-----BEGIN ENCRYPTED PRIVATE KEY-----
MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQI0RCKc9hI0wMCAggA
MBQGCCqGSIb3DQMHBAgViWCmkUP9LgSCBMgBoAfNCPp6XTsiYuIKZ3RguA2ac2cT
qu8m+Hp7POhGQw8tiOY1RbwYWQd88tlWPrwolIjrFramUA9JeVwVkXeiLxZYt/QE
Haj2Gh67zhBhgLT5lY+Iej/Rh4fhhzaINmm8Pg4kRghWLpBw5w+hx5aOkxONx9YU
PHJK4qYG/zkMgM9YVDG020ELh78HGGVek3zH5HWboPgmMpYv+JL0GWR4+UW4P2ag
tNfGRFsUaSuAncHF60zOMtkSgTw5uQqeURWwcRfwof+pnpJXvNmbPcMblEiPEB8y
StVJIhMf6OblYPRkLFowlNbF0yGQ2dcILJR+j3Lp3VBbbMGNLwtcTqQQkpHP+Du6
RA2FH8hCkJtPh67sooCitcoTCSQUCIHH7th9xyxjaP4GFJLyr1RpTDea0q6/jUno
7Qyn/uG0cUviP8W2dU/+BW7X9g5D6BTJFrhS9mq32/nzQYpUSlBZQGTQcYXwRw4L
se6WkKWVKYGJzqJY8qkGxGrTIfHzBXGb3RFEA32OGVyEExOW3O5/gXPVGpu0jmq5
XiGXS+G0qFYo8eOoEHQX4TYrArL9MbCvQVAudOp8dAdtEtM3kEUcBUGB0w6HRT2A
a/+RaWO7K1BnYQOyEN3OPHUr6kIPk9r6vfrnM7qopDYaMsNr1enK0mkY98eET0OV
ii9qxKBq/61aKiv4nR7xwCGm24iwrIL1CV2tmsj0B1TInICTuAWyFGzFI+yBy7ft
mJ5bO7tN+zQvMzlcIqhxuAc+QU/UKBgaqKE+AR6LpzxkAzJbPIZUlSXLdqSNx1xQ
M7aauaLUYbaTKYngIk2tfyz7ltUGASNNAGN1rSoXnoIED0AtKhZBVmiFVBwcbN4V
wMB6/i2/BhbTJ6aiky7RsfNiohMCFUulLEPaCeV2F2caBcRzf7umcDYSCxk025NS
IjTPLGakkFTOQpVzus9e3CkOXC+f0JjZYsBUUEqtEVm+4VIny73zhOyCCS5NqrsP
j85mf5fV0C8t+qN8xXTT9vMVU8RBMZxeBYAalM3Hgflr5pRhVcbrX2NPoRYJ7KVp
xnw8IrM+ZFnabhO8kxjJESSgiXUMPD2mGy2SobDPHCgPNnS0kqrhXdvPL/IP23js
5l4vcmOzOOHyXCwgXjOuvryjFx7V1RjeTHeEEv2n1ss7pQBKX6hL3NzKTaH9EXQK
fzJYd73ZERgntBqBWKdzQuOMTF4W9+MNpD6uw7eytnMD7NegTCri/TWHnHy8vbfp
VyDANTu9eXjeL0jlAVypDF7nz2MEosv+08MHBVndQAdwJQQAzoNMspZ8GFJ/FmjJ
SEwUHLzUtTpZdWTmOmhB/iMpE6mDV16UwKuSBkJwJHX3IzJRunaQaWrkoAPloc5F
utjcJSckKBngwoy8b+zrm3/Tphrtc/xf0KSUYVaMagLnJ32sjQ7wmIw72CpYBCwl
wuzIAFlUI7fta0r0KG7UN/CuPx6P8ITIER145c/RhE0E0YvBfZHRRap285wUcKEm
bvxDsGhhmFzXhhpSeqd+2LTTHbdBwDAJpWRubp4qJEJDhmXQxvu8tuCfHpgqGdAa
e5YUwh8qDd9UjQOCstjjuDHIW3BZXfplPBdcvkCsNjYKNwoWbIBZWzwzrcT/t9fC
81c=
-----END ENCRYPTED PRIVATE KEY-----
openssh
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,995042B2BD09CBF0EEFB8880F3A26548
FZ/uxWAb58oEjXdbBvYSUwUgpITYxHdhiStyM531MVyV59xyBCZWm2b5lGRPyMTi
4tySmqTkALa4Ql3x0/pXb7JECfhEM+QhdWrQIcVu/lNNq+hWRORS1D3qL6g7acrE
bTc/UnTu1CuVzYchASKDpYFVnP1vkuxmqWs3Q3v73JBi2nN99QxAtSLa8icAlPyD
b72s8FIKB0TvRveguf4IAek2In2snpjuOZGJvpXkRfmEk3T+gGPCS2ylXIjVfCFD
Z/vulucNRkXpTQbl70D/1GOILb4oG93dVRhLPAAcvRTCuTtQXsUOijOw5cN/ruF2
2sgjbC5j7gEcUabf62RR9mV4KCT4lFwaDJJVS1q5SGl/W0ie+sSinrh1U/Zq58gR
IbjYcibCTm/OyAbXZxT5l+R0G83PLva/dKI0bjx/lTmuFCGlLZ1VxUQHKWSkVSfr
dP125mN/lCJYYh3bPFgnyNrunr1f+roQdwpLB3kMh7CdMZc/jL/gKdwEfmegtBlV
fm/GhEQhjlDdeJIoLuu45cmqJgv8jTdDHRwZiJE4ovxP1ak+/aGuTnP7KuOlRLD8
d7Oex8AWDLuE/jt9WorKmObgi/xoWWxPvsB4LbMjoRSbKC5aJdVRRzST6UU5AubZ
nqJTfCQkFagft7yRgH4v4keA1Q6qhpBLApPObqSmat010C+FKuQKS0KvV5wlPxbX
QVJvE4yat4fB5Ght4XbL9Cn4BR4TSWn1Dhlgy+zFzknfV9Zyx8bkbmERtdKrHT4G
QN5Ch1LJOZ0jqrAu2zR+vi13NbghXrJd2I50BMWv1+Cu3K+GTnhysJ2WpiC6UnlO
8n3ggtshu593VqvvCggMA8Uh1T0eVvQ8b4x+uQq8V1urhj4Tc+XZS18VBlLQXf6d
6hpxyvMkw97PvaIdmmmwn1rDlYH25Z1sKMCCCrAmLUiukRsVwFUOYpkRu7kjR4jo
rxBvBUgLvBvIY2NOpPnRkFvZRSyQYpW3rI/YF6bVWUU3mz7XJPwZHb9De29giL92
h1JQycgO/8ItyXzIDIuHaSKibM5EIkIQDwHbC9jDxIb4lhoz54A5mZHVyHe+1tnU
N2Tpj4lj2Vbyux5h9AuPd8Z8DOzVpTuMVirO9/EIkhCzBF8zpVqHkvzR5qfuY1iO
LPE/tBm3jx756/kGSYnN1CwZPf3V96dVQzsgPkXSlPiz6ClDg3fmd+zqyCBI8PcA
B/kxnjVhcfxPSZcmgwy6yVqvqIW+EDPycDeExuxtci/siP+/o+KMs/C6UH9PwFHe
T5l3CJ3BbfZIEzhWhNzTVAyetWPwXjaUAEXUN+liRJv0qdGXOatXP//4KxuKjCRV
CsjED8QuMLlALZbBM0hy9w+Ms4fbANB2AmJPoRmgXIUURAD7s3gjLlCyfpMo75/Y
QX5JPyKgPbNxf7NT9GJXXgJpKeBGECEvCpqn0H/6lEKlnTw0fun/zaiYR3YQ/src
8yc/G8JZyEVMtEc7DBQkjso/zOIjrAUzTr0kmXUF8ie8/4mjxCbGuSed/aHpvDLX
MqfF1dWOSxtjGXOL3vSrnlX0OE3nD9W90IoVAvH7qkEf+XGtVIBbZF307aY/lPIz
-----END RSA PRIVATE KEY-----
puttygen
PuTTY-User-Key-File-2: ssh-rsa
Encryption: aes256-cbc
Comment: rsa-key-20180326
Public-Lines: 6
AAAAB3NzaC1yc2EAAAABJQAAAQEA50+HtIazHOMaAcL6mxy/6uewc2SYGt1EMRAQ
1J70l7PXyJbmKEjqfCh4EuFWAT6bCz3X01JIaoQXpZXTziPkGvKi4GEdTsELBbHm
xyuCnfidkBf/OryGGmKkR6xkeNZXlx2Cn3pw/p63ApJ0k2f7xg7cJgWZUElBQMsr
nTsEWvjwUZg/IfIFQEnDRgrBBsr50Rp5EsZiDsYmXCtY6of8G31EUag3FNMeL7nm
mCKVwbe7w8+G9P1WPEIDuYPQyEe1vMZBgV/YnLWSEOgYhH1UpeH517s+H89tFj14
KzUcJPsv362bhbAYCJHwXZ+WW3Vlbi7+bmPc2PnTAR4Hi9EoyQ==
Private-Lines: 14
XwyAR+efYjhDLZUdSwRExVKzacLMg5wwywvTndwUPh3WeqXcCujtWIrKFH3SpSEH
iIUIt9AurgPmyBx5sGX9DBS3QaIFhG0ZIc3TZOA+E5BQO+C2m0/iKztSSbLUsDsn
HGlD3b+3N3SPRorkkg3x0wOMYdAATBBizEp4Sz9/N8CCHwtBCB5/+MqWOVGx48D7
J1sWOnh190qJn75ry+eBFgzTsQDLAyVfp0zUcjtnJHrVXtoylPR4Bhp42B+uomm4
CBhTnbeH9v+6j+YsRlTMJ7Hj0auFH6v7mTeQ+LAhJd66pdawNr56YASW76N1BWuX
b+g0KS/h7W8JAzcDYhzVLP9zXZ+5W2ki7lNv5SKwJ23ssTzZjGlQIZwbxMotWmOL
I6KS0WwTeauMwvgYetizXKqcT9pKKzmYpwP9RaM/5eT4SH5UzmASJDWe/rW72Jb5
Ov3nWsSPsS/Gi6ttNYhRnV0djAG+cR/3OrQYwuFSeyD1U/uH9PkinQQjOwjuPjvK
NdhVWmcRqO53D2pADs8//ZubbonCERwqkeXpDI0ewduqVb3lWJYrvm1RvV5NuHHC
vUoyxLO8h8bMcFow3/meYPN2+MpYFRxavG33zwi8dtufH0ZgUBmZ24NusDEe0qKd
QQiUeiCcrfqwEWYdITSVCZyE8XKkyMuAsdsWdn/59bTJK0C6HtQjjEzTRbliwH26
3aR1u0fftdIFZwHN8drsvJhehBG0WbiwpWVgyx5yK08+2aqJD9rAD+JBweO8ARiZ
dE4Wn/sqMfCZbpkZnyG0iOkvGkiskN+LQU6XoOzOqacHsf2Q7qtpLgn6zWYCJfLI
car9Ln6mVKCsWrgU/uiiX9tVCnX1QD6bIAyQgIFV5Z8gzX7aXLt8PhSqO1K+6MVE
Private-MAC: 7673f1a69909796dbfe24cd8960ca7bf83c6f453
Экстракция и конвертация
Приватный в публичный.
-
openssl
-
openssh
-
puttygen
Конвертировать уже имеющийся ключ.
-
openssl -> openssh
-
openssl -> putty
-
openssh -> openssl
-
openssh -> putty
-
putty -> openssl
-
putty -> openssh
Инструкция для Windows
Самым простым и распрастраненным вариантом является Putty, а точнее puttygen.
Также можно использовать порты Unix приложений, например в MSYS2.
Запускаем puttygen.exe, жмем Generate. Водим мышкой для генерации случайной последовательности.
Вводим, если нужно, пароль для сертификата и сохраняем ключи. Также можно сохранить ключ в формате openssh через Conversions -> Export OpenSSH Key.
Из сохраненного .ppk файла всегда можно извлечь всю информацию, загрузив его в puttygen.
Выводы
- openssl совсем не нужен, как и все примеры с его использованием для генерации ssh ключей. Я всегда натыкался на него в примерах и это меня сбивало.
- ssh-keygen сохраняет публичный ключ в формате authorized_keys файла, puttygen сохраняет по RFC 4716.
- Предпочтения по платформам: Linux - ssh-keygen, Windows - puttygen.exe.