Kiedy zarządzasz wieloma maszynami, te same opcje SSH szybko trafiają do historii: użytkownik, port, klucz prywatny, a czasami skok. Plik ~/.ssh/config zastępuje tę niekończącą się linię krótką nazwą, na przykład ssh preprod.
Nie musisz modyfikować serwera. Ta konfiguracja żyje na twoim komputerze i wskazuje klientowi OpenSSH, jak połączyć się z każdą maszyną. Przede wszystkim zapobiega to używaniu niewłaściwego klucza lub portu, gdy kilka środowisk wygląda podobnie.
Utwórz wpis dla każdego serwera
Stwórz folder, jeśli jeszcze nie istnieje, a następnie otwórz plik konfiguracyjny:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/config
Następnie dodaj blok dla każdej maszyny. Tutaj preprod jest tylko aliasem lokalnym. Zastąp adres, konto, port i ścieżkę do klucza swoimi wartościami.
Host preprod
HostName 192.0.2.44
User admin
Port 2222
IdentityFile ~/.ssh/id_ed25519_preprod
IdentitiesOnly yes
Teraz możesz uruchomić ssh preprod. HostName zawiera prawdziwą nazwę DNS lub adres IP, User to zdalne konto, a Port to port SSH. IdentityFile wybiera oczekiwany klucz prywatny. Używając IdentitiesOnly yes, klient nie proponuje wszystkich kluczy załadowanych przez twój agent SSH, co zapobiega zbędnym próbom na serwerze ograniczającym autoryzacje.
Jeśli już używasz klucza, upewnij się najpierw, że jest odpowiednio chroniony. Klucz prywatny nie powinien być czytelny dla innych kont na twoim komputerze:
chmod 600 ~/.ssh/id_ed25519_preprod
chmod 600 ~/.ssh/config
Przewodnik dotyczący generowania klucza SSH na Ubuntu opisuje, jak utworzyć parę kluczy. Nigdy nie kopiuj klucza prywatnego na serwer. Tylko klucz publiczny powinien znajdować się w ~/.ssh/authorized_keys po stronie zdalnej.
Dodaj wspólne ustawienia na końcu pliku
Plik config może zawierać wiele bloków Host. Klient OpenSSH przyjmuje pierwszą znalezioną wartość dla większości opcji. Umieść więc najbardziej szczegółowe serwery na górze, a ogólne wartości na końcu.
Host production
HostName prod.example.net
User deploy
IdentityFile ~/.ssh/id_ed25519_production
IdentitiesOnly yes
Host sauvegarde
HostName backup.example.net
User backup
Port 2201
IdentityFile ~/.ssh/id_ed25519_backup
IdentitiesOnly yes
Host *
ServerAliveInterval 30
ServerAliveCountMax 3
Blok Host * ma zastosowanie do wszystkich aliasów. Odpowiada on naprawdę wspólnym ustawieniom, tutaj okresowemu wysyłaniu sygnału w celu wykrycia zawieszonego połączenia. Unikaj umieszczania w nim klucza lub użytkownika, jeśli twoje serwery nie korzystają ze wspólnego konta.
Możesz również grupować hosty, które podążają za tą samą zasadą, używając wzoru takiego jak Host *.intra. Zachowaj wyjątki powyżej tego bloku. Ambitny alias lub ogólna zasada umieszczona zbyt wcześnie często powoduje zaskakujące zachowanie.
Sprawdź konfigurację przed połączeniem
Następujące polecenie wyświetla ostateczną skonfigurowaną konfigurację dla aliasu, bez otwierania sesji. Jest bardzo przydatne po wprowadzeniu zmian:
ssh -G preprod | grep -E '^(hostname|user|port|identityfile|identitiesonly) '
Upewnij się, że hostname, user i port odpowiadają właściwej maszynie. Sprawdź też zwróconą ścieżkę dla identityfile. Jeśli właśnie przeniosłeś klucz, SSH może nadal wskazywać na stary plik.
Następnie wykonaj prosty test:
ssh preprod
ssh -v preprod
Opcja -v wyświetla kroki połączenia i odczytane pliki konfiguracyjne. Nie publikuj tej wyjściowej wiadomości w takiej formie w zgłoszeniu lub czacie: może ujawniać twoje nazwy hostów, konta i ścieżki lokalne.
Kiedy plik конфигурации nie wystarcza
Alias SSH rozwiązuje powtarzalność opcji. Nie naprawia serwera, który odrzuca twój klucz, zamkniętego portu lub zmienionego odcisku hosta. Jeśli autoryzacja często wymaga ponownego wprowadzenia hasła, użyj ssh-agent, zamiast usuwać hasło z klucza.
Aby uzyskać dostęp do lokalnej usługi przez bastion, zachowaj osobny wpis z ProxyJump i testuj ją oddzielnie. Tunel SSH odpowiada na inne potrzeby: transportuje lokalny lub zdalny port, nie zastępuje konfiguracji hosta.
- Chroń
~/.sshza pomocąchmod 700 ~/.ssh. - Chroń plik
configoraz każdy klucz prywatny za pomocąchmod 600. - Sprawdź alias za pomocą
ssh -G nom_aliasprzed pierwszym połączeniem. - Testuj każdy nowy serwer z jego aliasem, a następnie zachowaj wspólne opcje w bloku
Host *umieszczonym na końcu pliku.
Oficjalna dokumentacja ssh_config(5) szczegółowo opisuje każdą dyrektywę. Poświęć dwie minuty na przegląd wyników ssh -G przed użyciem aliasu na maszynie produkcyjnej: to szybsze niż szukanie przyczyny, dla której SSH wybrało niewłaściwy klucz.
