Android

Korzystanie z pliku konfiguracyjnego ssh

Ubuntu Server #2: Połączenie SSH, użytkownicy, grupy, hasła, uprawnienia do plików i katalogów

Ubuntu Server #2: Połączenie SSH, użytkownicy, grupy, hasła, uprawnienia do plików i katalogów

Spisu treści:

Anonim

Jedną z opcji byłoby utworzenie aliasu bash dla każdego zdalnego połączenia z serwerem. Istnieje jednak inne, znacznie lepsze i prostsze rozwiązanie tego problemu. OpenSSH pozwala skonfigurować plik konfiguracyjny dla każdego użytkownika, w którym można przechowywać różne opcje SSH dla każdego zdalnego komputera, z którym się łączysz.

Ten przewodnik obejmuje podstawy pliku konfiguracyjnego klienta SSH i wyjaśnia niektóre z najczęstszych opcji konfiguracji.

Wymagania wstępne

Zakładamy, że korzystasz z systemu Linux lub macOS z zainstalowanym klientem OpenSSH.

Lokalizacja pliku konfiguracji SSH

Plik konfiguracyjny OpenSSH po stronie klienta nosi nazwę config i jest przechowywany w katalogu .ssh katalogu .ssh użytkownika.

Katalog ~/.ssh jest tworzony automatycznie, gdy użytkownik uruchomi polecenie ssh po raz pierwszy. Jeśli katalog nie istnieje w twoim systemie, utwórz go za pomocą poniższej komendy:

mkdir -p ~/.ssh && chmod 700 ~/.ssh

Domyślnie plik konfiguracyjny SSH może nie istnieć, więc może być konieczne utworzenie go za pomocą polecenia touch:

touch ~/.ssh/config

Ten plik musi być czytelny i zapisywalny tylko dla użytkownika i niedostępny dla innych:

chmod 600 ~/.ssh/config

Struktura i wzorce plików konfiguracji SSH

Plik konfiguracyjny SSH ma następującą strukturę:

Host hostname1 SSH_OPTION value SSH_OPTION value Host hostname2 SSH_OPTION value Host * SSH_OPTION value

Zawartość pliku konfiguracyjnego klienta SSH jest podzielona na sekcje (sekcje). Każda sekcja zaczyna się od dyrektywy Host i zawiera określone opcje SSH, które są używane podczas nawiązywania połączenia ze zdalnym serwerem SSH.

Wcięcie nie jest wymagane, ale jest zalecane, ponieważ ułatwia odczytanie pliku.

Dyrektywa Host może zawierać jeden wzorzec lub listę wzorców oddzieloną spacjami. Każdy wzorzec może zawierać zero lub więcej znaków spacji lub jeden z następujących specyfikatorów wzorca:

  • * - Dopasowuje zero lub więcej znaków. Na przykład Host * pasuje do wszystkich hostów, a 192.168.0.* Pasuje do hostów w podsieci 192.168.0.0/24 . ? - Dopasowuje dokładnie jedną postać. Wzór, Host 10.10.0.? pasuje do wszystkich hostów w 10.10.0. zasięg. ! - Użycie na początku wzoru neguje dopasowanie. Na przykład Host 10.10.0.* !10.10.0.5 pasuje do dowolnego hosta w podsieci 10.10.0.5 z wyjątkiem 10.10.0.5 .

Klient SSH odczytuje sekcję pliku konfiguracyjnego według sekcji, a jeśli pasuje więcej niż jeden wzór, pierwszeństwo mają opcje z pierwszej pasującej sekcji. Dlatego na początku pliku należy podać więcej deklaracji specyficznych dla hosta, a na końcu pliku bardziej ogólne zastąpienia.

Możesz znaleźć pełną listę dostępnych opcji ssh, wpisując man ssh_config w swoim terminalu lub odwiedzając stronę manuala ssh_config.

Plik konfiguracyjny SSH jest również odczytywany przez inne programy, takie jak scp , sftp i rsync .

Przykład pliku konfiguracji SSH

Teraz, gdy omówiliśmy podstawową zawartość pliku konfiguracyjnego SSH, spójrzmy na następujący przykład.

Zazwyczaj podczas łączenia się ze zdalnym serwerem za pośrednictwem SSH należy podać nazwę zdalnego użytkownika, nazwę hosta i port. Na przykład, aby zalogować się jako użytkownik o nazwie john na hoście o nazwie dev.example.com na porcie 2322 z wiersza poleceń, wpisz:

ssh [email protected] -p 2322

Aby połączyć się z serwerem przy użyciu tych samych opcji, które podano w powyższym poleceniu, po prostu wpisując ssh dev , wstaw następujące wiersze do pliku "~/.ssh/config :

~ /.ssh / config

Host dev HostName dev.example.com User john Port 2322

Teraz, gdy wpiszesz ssh dev , klient ssh przeczyta plik konfiguracyjny i użyje szczegółów połączenia określonych dla hosta dev :

ssh dev

Przykład udostępnionego pliku konfiguracyjnego SSH

Ten przykład zawiera bardziej szczegółowe informacje na temat wzorców hosta i pierwszeństwa opcji.

Weźmy następujący przykładowy plik:

Host targaryen HostName 192.168.1.10 User daenerys Port 7654 IdentityFile ~/.ssh/targaryen.key Host tyrell HostName 192.168.10.20 Host martell HostName 192.168.10.50 Host *ell user oberyn Host * !martell LogLevel INFO Host * User root Compression yes

  • Gdy wpiszesz ssh targaryen , klient ssh odczyta plik i zastosuje opcje od pierwszego dopasowania, którym jest Host targaryen . Następnie sprawdza kolejne strofy jeden po drugim pod kątem pasującego wzorca. Następnym pasującym jest Host * !martell (co oznacza wszystkie hosty oprócz martell ) i zastosuje opcję połączenia z tej sekcji. Ostatnia definicja Host * również pasuje, ale klient ssh weźmie tylko opcję Compression , ponieważ opcja User jest już zdefiniowana w sekcji Host targaryen .

    Pełna lista opcji używanych podczas wpisywania ssh targaryen jest następująca:

    HostName 192.168.1.10 User daenerys Port 7654 IdentityFile ~/.ssh/targaryen.key LogLevel INFO Compression yes

    Podczas uruchamiania ssh tyrell pasujące wzorce hosta to: Host tyrell , Host *ell , Host * !martell i Host * . Dostępne opcje to:

    HostName 192.168.10.20 User oberyn LogLevel INFO Compression yes

    HostName 192.168.10.50 User oberyn Compression yes

    Dla wszystkich innych połączeń klient ssh użyje opcji określonych w sekcjach Host * !martell i Host * .

Zastąp opcję pliku konfiguracyjnego SSH

Klient ssh czyta swoją konfigurację w następującej kolejności:

  1. Opcje określone z wiersza poleceń. Opcje zdefiniowane w ~/.ssh/config Opcje zdefiniowane w /etc/ssh/ssh_config .

Host dev HostName dev.example.com User john Port 2322

i chcesz użyć wszystkich innych opcji, ale połączyć się jako użytkownik root zamiast john po prostu określ użytkownika w wierszu poleceń:

ssh -o "User=root" dev

Opcja -F ( configfile ) pozwala określić alternatywny plik konfiguracyjny dla użytkownika.

Aby powiedzieć klientowi ssh aby zignorował wszystkie opcje określone w pliku konfiguracyjnym ssh, użyj:

ssh -F /dev/null [email protected]

Wniosek

Pokazaliśmy, jak skonfigurować plik konfiguracyjny użytkownika ssh. Możesz także skonfigurować uwierzytelnianie oparte na kluczu SSH i połączyć się z serwerami Linux bez wprowadzania hasła.

Domyślnie SSH nasłuchuje na porcie 22. Zmiana domyślnego portu SSH dodaje dodatkową warstwę bezpieczeństwa do twojego serwera, zmniejszając ryzyko automatycznych ataków.

terminal ssh