Wstęp
Ssh jest pakietem mającym na celu zastąpienie rlogin, rsh i rsp, które ze względu na przesyłanie danych otwartym tekstem nie są bezpieczne. Pakiet ssh (i jego open-source implementacja openssh) wykonują te same czynności szyfrując całe połączenie.
Instalacja
Kod źródłowy można pobrać ze strony www.openssh.org ale pakiety z openssh znajdują się w każdej dystrybucji. Najprostsza jest oczywiście instalacja z pakietu ale pamiętaj iż program ma wtedy ustawione pewne parametry już podczas kompilacji, które mogą Ci przeszkadzać.
W dystrybucjach używających systemu pakietów rpm instalacje wykonasz wykorzystując polecenie:
rpm -i sshd
Instalacje w Debianie dokonasz wydając polecenie:
apt-get install sshd
Uruchomienie, restart i zatrzymanie serwera
Serwer uruchamiamy (w trybie konsoli) w dystrybucjach wykorzystujących schemat V System (czyli np. Red Hat, Debian, Mandrake ale nie Slackware) przy pomocy polecenia:
/etc/init.d/sshd start
Serwer restartujemy poleceniem:
/etc/init.d/sshd restart
Zatrzymania serwera dokonamy przy pomocy polecenia:
/etc/init.d/sshd stop
Generowanie kluczy serwera
Klucze serwera generujemy przy pomocy polecenia
ssh-keygen -f /etc/ssh/ssh_host_key
tworzy do klucz typu rsa1, jeżeli chcemy inny typ (rsa lub dsa) musimy to jawnie zadeklarować przez dodanie parametru -t ( w naszym przypadku -t rsa lub -t dsa). Przykładowy zapis procesu generowania kluczy to:
[root@workus ssh]# ssh-keygen -f /etc/ssh/ssh_host_key
Generating public/private rsa1 key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /etc/ssh/ssh_host_key.
Your public key has been saved in /etc/ssh/ssh_host_key.pub.
The key fingerprint is:
f7:fb:53:07:e2:05:b2:0f:96:b4:4b:e1:4b:b0:93:98 root@workus
[root@workus ssh]#
Jak widać zostały utworzone dwa pliki, Pierwszy to /etc/ssh/ssh_host_key i jest to prywatny klucz serwera, musisz go szczególnie chronić drugi to /etc/ssh/ssh_host_key.pub, jest to publiczny klucz serwera i możesz go spokojnie udostępniać publicznie.
Demon ssh
Demon ssh to program obsługujący połączenia inicjowane przez klienta ssh. Jego plik konfiguracyjny to /etc/ssh/sshd_config. My omówimy jedynie podstawowe i najbardziej przydatne opcje konfiguracyjne, wszystkie potrzebne informacje znajdziesz na stronie pomocy systemowej (man 8 sshd)
Przykładowy plik konfiguracyjny (opracowany na podstawie pliku z dystrybucji Mandrake) to:
-- /etc/ssh/sshd_config --
Port 22
#Protocol 2,1
#ListenAddress 0.0.0.0
HostKey /etc/ssh/ssh_host_key
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
ServerKeyBits 768
LoginGraceTime 600
KeyRegenerationInterval 3600
PermitRootLogin no
IgnoreRhosts yes
#IgnoreUserKnownHosts yes
StrictModes yes
X11Forwarding yes
X11DisplayOffset 10
PrintMotd yes
#PrintLastLog no
KeepAlive yes
# Logging
SyslogFacility AUTH
LogLevel INFO
RhostsAuthentication no
RhostsRSAAuthentication no
HostbasedAuthentication no
RSAAuthentication yes
PasswordAuthentication yes
PermitEmptyPasswords no
#CheckMail yes
#UseLogin no
Subsystem sftp /usr/lib/ssh/sftp-server
-- koniec listingu --
Znaczenie ważniejszych parametrów:
ListenAddres
Adresy IP, na których oczekiwane są połączenia. Wpis 0.0.0.0 oznacza wszystkie adresy lokalne.
Port 22
Port TCP, na którym oczekiwane są połączenia. Domyślny port to 22.
HostKey
Określa plik w którym znajduje się klucz prywatny serwera. Klucz publiczny do takiego serwera znajduje się w pliku o identycznej nazwie tylko zakończonej rozszerzeniem .pub
ServerKeyBits
Długość klucza w bitach, im dłuższy klucz tym lepiej, należy jednak pamiętać iż długie klucze mogą znacząco obniżać wydajność serwera.
LoginGraceTime
Czas po którym demon ssh rozłączy się gdy użytkownik nie przejdzie pomyślnie procedury autoryzacji. Domyślnie to 600 sekund.
KeyRegenerationInterval
Opcja dla ssh1 po której następuje regeneracja klucza serwera.
PermitRootLogin no
Opcja zezwala lub nie na logowanie się na serwer użytkownika root. Najlepiej uniemożliwić takie logowanie.
IgnoreRhosts yes
Określa że plik .rhosts i .shosts nie będzie używany w procesach RhostsAuthentication, RhostsRSAAuthentication lub HostbasedAuthentication.
#IgnoreUserKnownHosts yes
Określa czy sshd powinien ignorować pliki użytkownika $HOME/.ssh/knwon_hosts podczas RhostsRSAAutentication lub HostbasedAuthentication. Domyślna wartość to "no"
StrictModes yes
Określa czy powinny być sprawdzany dostęp do katalogu użytkownika. Ma to na celu uniemożliwienie logowania na konta mające ustawiony otwarty dostęp dla wszystkich.
X11Forwarding
Określa czy jest możliwe pośredniczenie w protokole X11. Domyślnie jest to wyłączone
PrintMotd yes
Określa czy należy drukować zawartość /etc/motd. Domyślnie "tak".
PrintLastLog
Określa czy wyświetlać informacje o ostatnim logowaniu
Porady praktyczne dla administratorów
Testowanie ustawień na zdalnym serwerze ssh
Jeżeli jestesmy połączeni ze zdalnym serwerem i chcemy przetestować nową opcję konfiguracji (np. zablokować zdalne połączenie dla root-a lub ograniczyć dostęp do okreslonych użytkowników) to możemy je przetestować bez obawy o utrate połączenia, jeżeli wydamy polecenie:
/etc/init.d/ssh restart
Po prostu nowe ustawienia demona ssh są obowiązujące tylko dla nowych połączeń.
Logowanie root-a tylko przez klucz kryptograficzny
Przydatną opcją dla posiadaczy różnych skryptów administrujących zdalnymi serwerami jest możliwosć logowania się na konto administratora systemu tylko przy pomocy kluczy kryptograficznych (dokładniej autoryzacja dla konta root jest możliwia tylko przy wykorzystaniu jego klucza prywatnego). Uzyskamy to ustawiając dla zmiennej PermitRootLogin wartosć without-password.
PermitRootLogin without-password
Openssh i windows
Istnieje również wersja openssh dla maszyn windowsowych. Dostępna jest na stronie http://sshwindows.sourceforge.net/.
Zobacz także
- SSH i SCP czyli bezpieczny telnet i ftp – dowiesz się np. jak logować do serwera ssh bez hasła