Jeśli posiadasz już swoje klucze SSH, możesz pominąć ten krok. Jeśli jednak korzystasz z kluczy starego typu (rsa
), warto wygenerować sobie nowe typu ed25519
.
$ ssh-keygen -t ed25519
Generating public/private ed25519 key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in ~/.ssh/id_ed25519
Your public key has been saved in ~/.ssh/id_ed25519
The key fingerprint is:
SHA256:JZlwqIRyk4Ts6BiBmXl+OhSka3ExB6IeLQoN5oPlX+E user@hostname
The key's randomart image is:
+--[ED25519 256]--+
|+X+*..o.. |
|&BX =..+ o |
|B%o* .E + . |
|*oO.o. o |
|== o. S |
|o.o |
| . |
| |
| |
+----[SHA256]-----+
Wygenerowany przeze mnie klucz (publiczny) to:
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICW08ZMY5KY5Ty5Eao5aRjGQ5OTA3fniOnJjXFxAlsWp
Klucz prywatny wygląda mniej więcej tak:
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxAAAAAAABAAAAMwAAAAtzc2gtZW
................................
... N I E U J A W N I A J ...
................................
zHjxpV+6xVrbW4CrkuaxxxxxxxxhdGV1c3phQHB0cjA=
-----END OPENSSH PRIVATE KEY-----
Nie należy ujawniać swojego klucza prywatnego.
nauka1.txt
:Ala ma kota.
Kot ma pchły.
Koniec.
Suma SHA256: c815c021e5aa48ac71efd24ad192530792a18273909a7e6174257083f74eff54
Proces podpisywania:
$ ssh-keygen -Y sign -f ~/.ssh/id_ed25519 -n file nauka1.txt
Signing file nauka1.txt
Write signature to nauka1.txt.sig
-n
)Parametr -n
widoczny w poleceniu to namespace (przestrzeń nazw). Jest to dodatkowy tekst podpisywany razem z zawartością pliku, mający na celu wskazanie przeznaczenia składanego podpisu. Mechanizm ten ma zabezpieczyć przed sytuacją, gdy prawidłowo podpisany plik przeznaczony do jednego zastosowania, mógłby przypadkiem zostać użyty w innej aplikacji, niezgodnie z intencją autora. Na przykład: stworzony przez kogoś skrypt (prawidłowo podpisany i wysłany jako załącznik maila) mógłby zostać użyty w jakimś systemie automatyzacji jako prawidłowy zestaw instrukcji do wykonania, a podpis złożony przez autora na potwierdzenie integralności i autentyczności pliku, zostałby potraktowany jako uwierzytelnienie do wykonania, pomimo, że intencją autora nie było uwierzytelnienie tego skryptu do takiego zastosowania.
W przypadku podpisywania plików do ogólnego zastosowania, rekomendowane jest użycie nazwy file
. Nazwa ta będzie też potrzebna odbiorcy do sprawdzenia poprawności.
nauka1.txt.sig
-----BEGIN SSH SIGNATURE-----
U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgJbTxkxjkpjlPLkRqjlpGMZDk5M
Dd+eI6cmNcXECWxakAAAAEZmlsZQAAAAAAAAAGc2hhNTEyAAAAUwAAAAtzc2gtZWQyNTUx
OQAAAEDPShjZeepYL79UgmFesZr3twqIlEITXqzJadVPuCXatXpK40ti/N6ElDc2070oym
FkmLXBepTApljeZplv/+YC
-----END SSH SIGNATURE-----