Konfiguracja ssh dla poszczególnych hostów

Wprowadzenie

Wielu ludzi pracuje przy pomocy OpenSSH, jest to bardzo popularne i bardzo użyteczne narzędzie. Istnieje wiele sposobów aby usprawnić korzystanie z ssh. Jednym z nich jest plik konfiguracyjny config. Pozwala on nam ustawić różne opcje ssh dla każdego host z osobna lub dla całej grupy hostów. Pozwala to na uniknięcie wpisywania opcji komendy ssh w lini poleceń i używanie łatwych do zapamiętania nazw zamiast adresów IP czy nazwy domenowej. Nazw tych można używać z poleceniem ssh, scp, w programie midnight commander oraz w wielu innych sytuacjach.

Domyślnie plik znajduje się w katalogu domowym użytkownika (~/.ssh/config). Konfiguracja opcjiI ssh obejmująca cały system (dla wszystkich użytkowników) znajduje się w /etc/ssh/ssh_config. Opcje w ~/.ssh/config mają pierwszeństwo przed opcjami w pliku /etc/ssh/ssh_config. To oczywiście znaczy, że użytkownik ma możliwość ustawienia własnej konfiguracji klienta ssh.

Zakładam, że OpenSSH jest zainstalowane. W Debianie jest to pakiet openssh-client.

Konfiguracja dla jednego hosta

Konfiguracja dla użytkownika jak i dla całego systemu jest taka sama. Różni się tylko lokalizacją pliku.

Zakładamy plik konfiguracyjny, który domyślnie nie jest tworzony i nadajemy uprawnienia do odczytu tylko dla użytkownika – 600.

touch ~/.ssh/config
chmod 600 ~/.ssh/config

Następnie otwieramy plik:

editor ~/.ssh/config

Przykładowy wpis dla jakiegoś hosta:

Host router
    Port 1234
    HostName nasz.host.pl
    User jakislogin
    Compression yes

W ten sposób przy logowaniu będziemy mogli wydawać polecenie:

ssh router

zamiast

ssh jakislogin@nasz.host.pl -p 1234 -o "Compression no"

W midnight commander nie trzeba się już martwić jak przekazać port, na którym nasłuchuje ssh na hoście do którego potrzebujemy się połączyć. Będzie to wyglądało następująco:
Zrzut ekranu MC przy połączeniu po powłoce (shell)
Jest to duże ułatwienie w codziennej pracy. Oczywiście można też korzystać z kombinacji klawiszy Ctrl+r i Ctrl+s. Jednak, krótsze polecenia są czytelniejsze.

Konfiguracja dla grupy hostów

Załóżmy, że łączymy się przez ssh do komputerów w różnych sieciach – w sieci lokalnej i w jakiejś sieci odległej i w sieci lokalnej używamy loginu romek, a w sieci odległej atomek. Można skonfigurować ssh tak aby dla różnych zakresów adresów była używana domyślnie różna nazwa użytkownika oraz różne wartości parametru Compression. Uwierzytelnianie odbywa się za pomocą kluczy, jednak dla każdej sieci będą to inne klucze.

Oto przykładowa konfiguracja:

# dla sieci lokalnej
# wyłączona kompresja, login "romek", port 3476 i plik z kluczem
#
Host 192.168.14.*
    Port 3476
    User romek
    IdentityFile ~/.ssh/id_rsa
    Compression no

# dla sieci zdalnej
# włączona kompresja, login "atomek", port 1234 i plik z kluczem
#
Host *.example.com
    Port 1234
    User atomek
    IdentityFile ~/.ssh/id2_rsa
    Compression

Na hosta w sieci lokalnej logujemy się poleceniem (odpowiednie parametry będą odczytane z pliku konfiguracyjnego ssh):

ssh 192.168.14.34

Na hosta w sieci odległej polecenie będzie wyglądało tak:

ssh alfa.example.com

Objaśnienie do wpisów:

Konfiguracja dla danego hosta lub grupy hostów kończy się w momencie wystąpienia kolejnego wpisu Host.

Oczywiście ssh pozwala na ustawienie tutaj każdej dostępnej opcji. Więcej w man 5 ssh_config.

Autor: grzeszy - 7, Grudzień 2008
Kategoria: Administrowanie, Linux
Tagi: ,

Skomentuj

Ostatnie wpisy