Domyślnie ssh wyszukuje id_dsa
i id_rsa
pliki. Klucze nie muszą być tak nazywane, możesz je mykey
równie dobrze nazwać , a nawet umieścić w innym katalogu. Jeśli jednak zrobisz jedną z nich, musisz jawnie odwołać się do klucza w komendzie ssh w następujący sposób:
ssh user@server -i /path/to/mykey
Jeśli polecenie nie akceptuje -i
, np. sshfs
Skorzystaj z IdentityFile
opcji:
sshfs -o IdentityFile=/path/to/mykey user@host:/path/on/remote /mountpoint
Jak to działa
Podczas generowania klucza otrzymasz dwa pliki: id_rsa
(klucz prywatny) i id_rsa.pub
(klucz publiczny). Jak sugerują ich nazwy, klucz prywatny należy zachować w tajemnicy, a klucz publiczny można opublikować publicznie.
Uwierzytelnianie za pomocą klucza publicznego działa z kluczem publicznym i prywatnym. Zarówno klient, jak i serwer mają własne klucze. Podczas instalacji openssh-server
serwera klucze publiczne i prywatne są generowane automatycznie. W przypadku klienta musisz to zrobić samodzielnie.
Kiedy (klient) łączysz się z serwerem, klucze publiczne są wymieniane. Otrzymasz jeden serwer, a serwer twój. Przy pierwszym otrzymaniu klucza publicznego serwera zostaniesz poproszony o jego zaakceptowanie. Jeśli ten klucz publiczny zmienia się z czasem, zostaniesz ostrzeżony, ponieważ trwa możliwy atak MITM (Man in the middle), przechwytujący ruch między klientem a serwerem.
Serwer sprawdza, czy możesz łączyć się (zdefiniowany w /etc/ssh/sshd_config
) i czy Twój klucz publiczny jest wymieniony w ~/.ssh/authorized_keys
pliku. Możliwe przyczyny odmowy klucza publicznego:
/etc/ssh/sshd_config
:
AllowUsers
lub AllowGroups
jest określony, ale użytkownik serwera nie jest wymieniony na liście grup lub użytkowników (domyślnie nie jest zdefiniowany, nie nakłada żadnych ograniczeń na logowanie się użytkowników lub grup).
DenyUsers
lub DenyGroups
jest określony i znajdujesz się na liście użytkowników lub grup.
- Próbujesz zalogować się jako root, ale
PermitRootLogin
jest ustawiony na No
(domyślny yes
).
PubkeyAuthentication
jest ustawiony na No
(domyślny yes
).
AuthorizedKeysFile
jest ustawiony w innej lokalizacji, a klucze publiczne nie są dodawane do tego pliku (domyślnie .ssh/authorized_keys
w stosunku do katalogu domowego)
~/.ssh/authorized_keys
: twój klucz publiczny nie został dodany do tego pliku (pamiętaj, że ten plik jest czytany jako użytkownik root)
Używanie wielu kluczy
Często zdarza się, że używasz wielu kluczy. Zamiast biegać ssh user@host -i /path/to/identity_file
, można użyć pliku konfiguracyjnego ~/.ssh/config
.
Typowe ustawienia to IdentityFile (klucze) i port. Następna konfiguracja sprawdzi „id_dsa” i „bender” tylko podczas łączenia z ssh youruser@yourhost
:
Host yourhost
IdentityFile ~/.ssh/id_dsa
IdentityFile ~/.ssh/bender
W przypadku pominięcia Host yourhost
ustawienia zostaną zastosowane do wszystkich połączeń SSH. Inne opcje mogą być określone dla tego gospodarza meczu, jak User youruser
, Port 2222
itp Pozwoliłoby to na połączenie z skrót ssh yourhost
zamiast ssh -p2222 youruser@yourhost -i ~/.ssh/id_dsa -i ~/.ssh/bender
.