SSH

tłumaczenie(y): Deutsch – English – Français – Italiano – Español – Português Brasileiro

ToDo: Scal (i Przetłumacz) tę stronę i francuską (bardziej kompletną)

wprowadzenie

SSH oznacza Secure Shell i jest protokołem do bezpiecznego zdalnego logowania i innych bezpiecznych usług sieciowych przez niepewną sieć1. Zobacz Wikipedia-Secure Shell, aby uzyskać więcej ogólnych informacji oraz ssh, LSH-client lub dropbear dla implementacji oprogramowania SSH, z których OpenSSH jest najpopularniejszy i najczęściej używany2. SSH zastępuje niezaszyfrowane telnet, rlogin i rsh i dodaje wiele funkcji.

w tym dokumencie będziemy używać OpenSSH command suite, należy również założyć, że następujące dwie zmienne są zdefiniowane:

remote_host=<the remote computer>remote_user=<your user name on $remote_host>

Tak więc, jeśli chcesz użyć poniższych przepisów, najpierw ustaw te zmienne na nazwę komputera zdalnego i nazwę Użytkownika na tym komputerze zdalnym. Następnie wytnij i wklej poniższe polecenia powinny działać. remote_host może być również adresem IP.

instalacja

Instalacja klienta

Zwykle klient jest instalowany domyślnie. Jeśli nie, wystarczy uruchomić jako root:

apt install openssh-client

Instalacja serwera

serwer umożliwia połączenie zdalne i jest instalowany przez uruchomienie jako root:

apt install openssh-server

pliki konfiguracyjne

główne pliki konfiguracyjne znajdują się w katalogu /etc / ssh :

  • ssh_config: plik konfiguracyjny klienta

  • sshd_config: plik konfiguracyjny serwera

ponadto katalog ten zawiera pary kluczy prywatnych / publicznych identyfikujące hosta :

  • ssh_host_dsa_key
  • ssh_host_dsa_key.pub
  • ssh_host_rsa_key
  • ssh_host_rsa_key.pub

od wersji OpenSSH 5.73 dostępna jest nowa para kluczy prywatnych / publicznych:

  • ssh_host_ecdsa_key
  • ssh_host_ecdsa_key.pub

od wersji OpenSSH 6.54 dostępna jest nowa para kluczy prywatnych / publicznych:

  • ssh_host_ed25519_key
  • ssh_host_ed25519_key.pub

regenerowanie kluczy hosta

rm /etc/ssh/ssh_host_*dpkg-reconfigure openssh-server

zdalne logowanie

za pomocą hasła

jeśli chcesz zalogować się do $remote_host jako użytkownik $remote_user po prostu wpisz

ssh $remote_user@$remote_host

, a następnie wpisz swoje hasło.

jeśli nazwy użytkownika na komputerze lokalnym i zdalnym są identyczne, możesz upuścić $remote_user@ – part I po prostu napisać

ssh $remote_host

Jeśli logujesz się po raz pierwszy do komputera zdalnego, ssh zapyta cię, czy jesteś pewien, że chcesz się połączyć ze zdalnym komputerem. Odpowiedz ” tak ” po zweryfikowaniu odcisku palca komputera zdalnego, wpisz hasło, a ssh połączy Cię ze zdalnym hostem.

używanie kluczy współdzielonych

jedną z funkcji ssh jest używanie pary kluczy prywatnych/publicznych do łączenia się ze zdalnym hostem. Znany również jako klucze SSH. Ta metoda pozwala zalogować się do zdalnego hosta bez wpisywania hasła za każdym razem. Aby to zrobić, musisz wygenerować parę kluczy prywatnych/publicznych na lokalnym komputerze i zdalnie zdalnie zdać klucz publiczny.

aby wygenerować klucz, użyj programu ssh-keygen w następujący sposób

ssh-keygen -t rsa

ten program generuje parę kluczy prywatnych/publicznych w katalogu ~/.ssh. Program najpierw pyta o pliki docelowe dla kluczy, domyślnie znajdujących się w~/.ssh. Następnie wymagane jest hasło.

UWAGA: Zalecamy, aby hasło nie było puste. Atakujący, który zdobędzie Twój klucz prywatny, może w inny sposób połączyć się z hostami, na których zdeponowałeś swój klucz publiczny, ponieważ hasło jest puste. Wybierz długie i złożone hasło.

Twój klucz prywatny to id_rsa (nie dawaj go komuś innemu), Twój klucz publiczny to id_rsa.pub.

kopiujesz swój klucz publiczny do zdalnego hosta za pomocą polecenia ssh-copy-id

ssh-copy-id -i ~/.ssh/id_rsa.pub $remote_user@$remote_host

teraz możesz po prostu połączyć się ze zdalnym hostem i poprosić o podanie hasła. Gdy to zrobisz, połączysz się ze zdalnym hostem. W przypadku nowego połączenia hasło nie zostanie ponownie poproszone podczas całej sesji.

zarządzanie kluczami

Korzystanie z GUI

Opcjonalnie seahorse jest aplikacją GNOME, która łatwo zarządza kluczami szyfrowania i hasłami za pomocą intuicyjnego graficznego interfejsu użytkownika (GUI). Konik morski jest w stanie wykonywać różne operacje. Takich jak tworzenie kluczy SSH lub PGP, konfigurowanie ich i buforowanie. Czytaj więcej.

zabezpieczanie

serwera SSH

domyślnie serwer SSH jest stosunkowo bezpieczny. Z pomocą kilku dobrych praktyk, opcji konfiguracyjnych i zewnętrznych narzędzi możliwe jest jeszcze trudniejsze dla „robotów” i krakerów

dobre praktyki z serwerem SSH

  • /!\ Zastosuj aktualizacje zabezpieczeń openssh-server tak szybko, jak to możliwe. Co pozwala na ochronę przed znanymi dziurami bezpieczeństwa.

  • Aktywuj uwierzytelnianie kluczy SSH tylko za pomocą haseł/fraz. Wyłącz uwierzytelnianie tylko hasłem.

  • rozważ użycie fail2ban, który jest monitorem plików dziennika, który automatycznie blokuje adres IP po określonej liczbie nieudanych prób logowania. Który automatycznie zabezpiecza przed atakami typu brute-force.

  • więcej dobrych praktyk korzystania z ssh na https://lackof.org/taggart/hacking/ssh/

opcje konfiguracji

(! należy edytować plik / etc / ssh / sshd_config, aby zmienić parametry, a następnie ponownie uruchomić serwer ssh za pomocą

service ssh restart
  • Dezaktywacja przy użyciu haseł do uwierzytelniania (PasswordAuthentication no).

  • Dezaktywuj za pomocą konta root (PermitRootLogin no).

  • Zezwalaj na logowanie tylko przez określonych użytkowników lub grupy (AllowUsers i AllowGroups)

{i} opcje AllowUsers i AllowGroups nie poprawiają bezpieczeństwa serwera SSH. Ale w niektórych przypadkach ich użycie pozwala nieco dłużej oprzeć się atakowi brute force.

  • fail2ban: pozwala na automatyczną czarną listę adresów IP próbujących brutalnie wymusić serwer SSH za pomocą iptables.

  • denyhosts : jako fail2ban, denyhosts pozwala na blokowanie adresów IP próbujących brutalnie wymusić połączenie z ssh. Ale w przeciwieństwie do fail2ban nie używa iptables, ale plik / etc / hosts.zaprzecz.

klient SSH

dobre praktyki z Klientem SSH

  • /!\ Zastosuj aktualizacje zabezpieczeń openssh-client tak szybko, jak to możliwe. Co pozwala na ochronę przed znanymi dziurami bezpieczeństwa.

  • Użyj uwierzytelniania kluczy SSH. Zamiast uwierzytelniania hasłem.

  • Dodaj silne hasła/hasła do kluczy SSH. Zmniejsza to ryzyko ataków siłowych.

dodatkowe funkcje

wyświetlanie plików w GUI

w menedżerach plików takich jak Konqueror, Dolphin, Krusader i Midnight Commander możesz użyć FISH do wyświetlania plików w GUI używając:

fish://username@server_name_or_ip

dodatkowe polecenia

scp

scp to narzędzie wiersza poleceń umożliwiające przesyłanie plików między dwoma maszynami.

  • wysyłanie pliku:
scp $source_file $remote_user@$remote_host:$destination_file
  • kopiowanie pliku na maszynę lokalną:
scp $remote_user@$remote_host:$source_file $destination_file

SFTP

tryb tekstowy

tryb graficzny

klastrysh

ssh-agent i SSH-add

ssh-agent to przydatne narzędzie do zarządzania kluczami prywatnymi i ich hasłami. Większość środowisk graficznych w Debianie będzie już skonfigurowana do uruchamiania ssh-agent (poprzez systemd User services lub / etc / X11 / Xsession), więc nie powinieneś uruchamiać go ręcznie.

# Check if ssh-agent is runningenv | grep -i ssh

nadal będziesz musiał powiedzieć agentowi, aby zarządzał Twoimi kluczami.

# List keys managed by the agentssh-add -l# Add your ssh keyssh-add ~/.ssh/your_private_key

gdy klucz prywatny jest najpierw potrzebny, zostaniesz poproszony o jego hasło. ssh-agent zapamięta klucz, aby Twoje hasło nie zostało już zapytane.

pęk kluczy

pęk kluczy, dostarczany przez pakiet pęk kluczy, jest skryptem powłoki pozwalającym używać agenta ssh w wielu sesjach tego samego komputera. W efekcie po pierwszym uruchomieniu ssh-agent tworzy stałe Gniazdo umożliwiające komunikację z ssh. Do tego gniazda odwołuje się tylko w środowisku sesji, w której agent został uruchomiony. Pęk kluczy pozwala wykryć agenta i propagować dostęp do tego agenta na inne sesje; pozwala to na użycie pojedynczej instancji SSH-agenta na użytkownika na komputerze.

ssh-askpass

SSH-askpass to narzędzie do prostego pytania o hasło klucza prywatnego podczas jego używania. Istnieje kilka implementacji:

  • x11-SSH-askpass: wersja dla X11

  • kaskpass: integracja ssh-askpass ze środowiskiem KDE

  • SSH-askpass-gnome : integracja ssh-askpass ze środowiskiem Gnome

libpam-usb

libpam-usb jest narzędziem (dostępnym tylko do wydania Debian Jessie) umożliwiającym uwierzytelnianie za pomocą pamięci USB. Ten pakiet zawiera przydatne narzędzie: pamusb-agent. To narzędzie, po poprawnym skonfigurowaniu, pozwala załadować klucze SSH obecne na pamięci USB po podłączeniu i rozładować je po odłączeniu.

polecenia zdalne

jeśli chcesz tylko uruchomić jedno polecenie na zdalnym komputerze, nie musisz się logować. Możesz powiedzieć ssh, aby uruchomił komendę bez logowania, na przykład,

ssh $remote_user@$remote_host 'ls *.txt'

wyświetla listę wszystkich plików z rozszerzeniem .txt na zdalnym komputerze. Działa to z pojedynczymi cytatami kleszczy „…”as shown here, with double tick quotes”…”, a bez cudzysłowów. Mogą jednak występować różnice między tymi trzema przypadkami, które nie zostały jeszcze udokumentowane.

SSH do Debiana z innego systemu operacyjnego

  • PuTTY to aplikacja emulatora terminala, która może działać jako klient dla ssh. Jest szeroko stosowany przez użytkowników systemu Windows.

  • Wikipedia ma Comparison_of_SSH_clients

dobre praktyki korzystania z SSH

musisz to przeczytać: https://lackof.org/taggart/hacking/ssh/

dokument ten podsumowuje wiele dobrych praktyk, które zwykli użytkownicy SSH powinni stosować, aby uniknąć narażania bezpieczeństwa swoich kont (i całej maszyny W tym samym czasie).

Skonfiguruj swoje ~/.SSH / config, aby wysłać tylko odpowiedni klucz.

Host master.debian.org User account IdentityFile ~/.ssh/id_rsa IdentitiesOnly yes

Rozwiązywanie problemów

niedopasowanie wersji OpenSSL. Zbudowany na podstawie 1000105f, masz 10001060

jeśli podczas uruchamiania demona ssh pojawi się komunikat o błędzie, musisz uruchomić:

apt install openssh-server openssh-client

Zobacz także błąd # 732940.

SSH zawiesza się

problem

próbujesz SSH na zdalnym komputerze. Ale podczas logowania SSH sesja zawiesza się / zawiesza na czas nieokreślony. W ten sposób nie są prezentowane w wierszu polecenia. I nie jesteś w stanie użyć żadnych poleceń SSH :( podczas korzystania z trybu debugowania SSH sesja zawiesza się w tej linii debug2: channel 0: otwórz potwierdź rwindow 0 rmax 32768

możliwa przyczyna

z niektórymi routerami za NAT i przy użyciu OpenSSH. Podczas konfiguracji sesji, po podaniu hasła, OpenSSH ustawia pole TOS (type of service) w datagramie IP. Router dławi się tym. Efektem jest to, że Twoja sesja SSH zawiesza się w nieskończoność. Innymi słowy, polecenia SSH lub połączenia rzadko działają lub w ogóle nie działają.

Rozdzielczość z IPQoS 0x00

, dopóki producent routera nie naprawi oprogramowania układowego. Oto jedna z opcji rozwiązania tego problemu:

  1. sprawdź dokładnie, czy Twoja wersja openssh-server i OpenSSH-client to 5.7 lub nowsza. Na przykład poniższa rozdzielczość powinna działać z Debianem 7.11 Wheezy lub nowszym, ponieważ pochodzi z OpenSSH w wersji 6.0.

  2. Edytuj jeden z dwóch następujących plików znajdujących się w:

    ~/.ssh/config

    lub

    /etc/ssh/ssh_config

    Uwaga: plik konfiguracyjny jest dla każdego użytkownika, a plik ssh_config jest dla wszystkich użytkowników i całego systemu. Jeśli nie jesteś pewien, edytuj odpowiedni plik konfiguracyjny użytkownika.

    zawartość pliku przed

    Host *

    zawartość pliku po

    Host * IPQoS 0x00
  3. jeśli masz już otwarte okna terminala / konsoli. Całkowicie zamknąć wszystkie z nich. Spowoduje to zamknięcie wszystkich aktywnych sesji SSH.
  4. nie ma potrzeby restartu OpenSSH lub Debiana. Spróbuj ponownie SSH na dowolnym zdalnym serwerze. Powinno zadziałać. Done udało się rozwiązać ten problem :)

    podziękowania dla Joe i catmaker za tę wskazówkę :)

    powiązana dokumentacja w https://www.openssh.com/txt/release-5.7

Rozdzielczość z netcat

/!\ Ostrzeżenie: zaleca się rozważenie użycia tej innej rozdzielczości z IPQoS 0x00 zamiast użycia opcji netcat / ProxyCommand NC %h % P. Ponieważ IPQoS 0x00 jest oficjalną wbudowaną OpenSSH opcją. Również IPQoS 0x00 jest bardziej bezpośrednim sposobem rozwiązania tego problemu i potencjalnie bezpieczniejszą opcją. Ponieważ IPQoS 0x00 używa wbudowanego szyfrowania SSH do bezpiecznych transferów. Porównaj z netcat nie szyfrowane transfery. Źródła: 1 2. Jeśli wybierzesz opcję netcat / ProxyCommand NC %h %p Czytaj dalej.

inną opcją, aby rozwiązać problem z zawieszeniem SSH, jest użycie ProxyCommand NC %h %P. Aby to zrobić, wykonaj te same kroki, co powyższa rozdzielczość z IPQoS 0x00. Ale zamień IPQoS 0x00 na

ProxyCommand nc %h %p

utrzymuj połączenie SSH

ze względów bezpieczeństwa domyślnie połączenie SSH jest automatycznie zamykane po określonym czasie. Ale w niektórych przypadkach chcesz, aby to połączenie było otwarte. Takich jak Przechowywanie w chmurze przez połączenie SSH.

/!\ WARNING: Before activating that keep SSH connection alive option. Zaleca się rozważenie zabezpieczenia zarówno klienta SSH, jak i serwera SSH. Ponieważ na przykład istnieje ryzyko, że użytkownicy pozostawią sesję SSH otwartą, a ich komputer bez nadzoru i odblokowany. Każdy może podejść do tego komputera, a następnie wykorzystać otwarte połączenie SSH. Na przykład za pomocą polecenia passwd i zmień hasło. A tym samym uzyskać dostęp do serwera. Innymi słowy, przed aktywacją opcji Zachowaj połączenie SSH przy życiu, zaleca się użycie najlepszej oceny i dobrych praktyk bezpieczeństwa.

Dla Debiana 7.X server

kroki, aby utrzymać połączenie SSH przy życiu.

na serwerze SSH Edytuj plik/etc/ssh / sshd_config i dodaj następujący plik na dole tego pliku.

# Keep client SSH connection alive by sending every 300 seconds a small keep-alive packet to the server in order to use ssh connection. 300 seconds equal 5 minutes.ClientAliveInterval 300 # Disconnect client after 3333 "ClientAlive" requests. Format is (ClientAliveInterval x ClientAliveCountMax). In this example (300 seconds x 3333) = ~999,900 seconds = ~16,665 minutes = ~277 hours = ~11 days.ClientAliveCountMax 3333

jako użytkownik root uruchom ponownie usługę SSH:

service sshd restart

należy pamiętać, że na najnowszych systemach Debiana (np. Wheezy 7 z aktualnymi aktualizacjami z listopada. 2015), powyższe polecenie nie działa i zwraca błąd:

sudo service sshd restartsshd: unrecognized service

jednak następujące prace:

sudo service ssh restart Restarting OpenBSD Secure Shell server: sshd.

Zobacz

  • multiplekser ekranowo-terminalowy z emulacją terminala VT100 / ANSI

  • tmux-alternatywny multiplekser terminalowy

CategoryNetwork CategorySoftware

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.