ssh bez passwd
passwd rsa
ssh bez passwd
Żeby zalogować się do SSH za pomocą pary kluczy, należy na początku je wygenerować.
Klucze ssh można wygenerować za pomocą jednej linii:
ssh-keygen -t rsa -b 4096 -C "[email protected]"
Parametry oznaczają:
-t metoda szyfrowania(zalecana RSA), -b wielkość klucza, -c komentarz – będzie widoczny w kluczach na serwerze, aby było łatwiej zidentyfikować do kogo należy.
Teraz zostaniemy poproszenie o wskazanie lokalizacji zapisania klucza:
Generating public/private rsa key pair. Enter file in which to save the key (~/.ssh/id_rsa):
Najlepiej jeżeli wciśniemy Enter bez podawania lokalizacji i zostawimy to pole puste. Klucz zostanie wygenerowany w domyślnej lokalizacji jaką jest (~/.ssh/id_rsa):
jeżeli już jakiś klucz mamy, zapyta czy nadpisać odpowiadamy:
Overwrite (y/n)? n
Wydajemy ponownie polecenie
ssh-keygen -t rsa -b 4096 -C "[email protected]"
I wpisujemy, jak ma się nazywać nasz klucz: lmk_one
W ostatnim kroku generator zapyta nas o passphrase czyli hasło szyfrujące klucz, nie musimy go podawać. Natomiast jeżeli je wpiszemy to przy, każdej próbie połączenia będziemy musieli je podać.
Enter passphrase (empty for no passphrase): Enter same passphrase again:
*Hasło, które będziemy wpisywać będzie niewidoczne.
Generating public/private rsa key pair.
Enter file in which to save the key (~/.ssh/id_rsa): lmk_one
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in lmk_one
Your public key has been saved in lmk_one.pub
The key fingerprint is:
SHA256:smGzqcNwaWcuneoTPN8n2/DZOwi0hD8+LybHRmM8JbQ [email protected]
The key's randomart image is:
+---[RSA 4096]----+
| |
| . |
| o . |
| . E . |
| . ...T+ + |
| . C oooo B o |
| =oOo- o O + |
| .=+=.= B * o |
| .+*o O.=. .o |
+----[SHA256]-----+
Dodanie klucza SSH do ssh-agent:
eval ssh-agent
SSH_AUTH_SOCK=/var/folders/v4/7tdg_zf93h3fn4_t4xfzx91w0000gn/T//ssh-eIQfVGqqm55L/agent.15397; export SSH_AUTH_SOCK;
SSH_AGENT_PID=15398; export SSH_AGENT_PID;
echo Agent pid 15498;
ssh-add ~/.ssh/lmk_one
Identity added: ~/.ssh/lmk_one ([email protected])
Gotowe klucze są wygenerowane i zapisane we wskazanym miejscu. Jeśli nie podałeś ścieżki, tylko samą nazwę pliku, to kluczyki znajdziesz w katalogu .ssh użytkownika.
We wskazanej lokalizacji masz wygenerowane 2 pliki. W moim przypadku jest to katalog .ssh oraz pliki ‘lmk_one’ i ‘lmk_one.pub‘.
Klucz prywatny
Plik bez rozszerzenia w moim przypadku plik o nazwie lmk_one to klucz prywatny. Jak tylko otworzysz plik to pierwsza i ostatnia linia cię o tym poinformuje:
-----BEGIN RSA PRIVATE KEY-----
...
...
...
-----END RSA PRIVATE KEY-----
Plik ten trzymasz u siebie na komputerze, albo w maszynie z której następuje połączenie i nikomu go nie udostępniasz. Jeśli wybrałeś tworzenie kluczyka z passphrase to plik wygląda w taki sposób:
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,E6A043B96361C3403079010BDB08DD66
.
Klucz publiczy
Plik o rozszerzeniu .pub to klucz publiczny. Jeśli go otworzysz to na jego początku powinieneś mieć wpis ssh-rsa, a na końcu komentarz który wpisałeś w moim przypadku wygląda to tak:
ssh-rsa ... [email protected]
Ten kluczyk przesyłasz na serwer do którego zamierzasz się połączyć. Możemy to zrobić poleceniem podając login i adres servera:
ssh-copy-id [email protected]
Innym sposobem jest wykonanie polecenia w którym wskazujemy nasz publiczny klucz oraz podajemy login i adres docelowego serwera:
cat ~/.ssh/lmk_one.pub | ssh [email protected] "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys"
Można zrobić to także ręcznie, czyli w katalogu użytkownika który będzie logował się kluczem tworzymy katalog .ssh z uprawnieniami 700 a w nim plik o nazwie authorized_keys z uprawnieniami 600 i zawartości naszego klucza prywatnego:
mkdir $HOME/$User/.ssh;
chmod 700 $HOME/$User/.ssh;
touch $HOME/$User/.ssh/authorized_keys
chmod 600 $HOME/$User/.ssh/authorized_keys
echo "ssh-rsa ... ... [email protected]" >> $HOME/$User/.ssh/authorized_keys
Znak >> oznacza że klucz zostanie dopisany do pliku. Czyli kolejne klucze dodajemy w taki sam sposób i będą one dopisywane jeden pod drugim.
Zgubiłeś public key?
Na koniec mała porada. Jeśli zaginoł ci klucz publiczny to nie panikuj, łatwo możesz go odtworzyć z klucza prywatnego.
Jeśli ktoś np. admin chce dodać twój klucz publiczny do serwera, a Ty nie wiesz, co z nim zrobiłeś, to możesz w prosty sposób go odtworzyć. Przechodzisz do katalogu, w którym trzymasz klucz prywatny (zazwyczaj katalogu .ssh w profilu użytkownika ~/.ssh/) i używasz polecenia poniżej. Podajesz nazwę klucza prywatnego np. lmk_one i nazwę, pod jaką ma być odtworzony klucz publiczny np. lmk_one.pub
ssh-keygen -y -f lmk_one > lmk_one.pub