Rozumiem, jak działa ~ / .ssh / config, że każda linia „Host” działa dla każdego pasującego hosta po tym punkcie w pliku konfiguracyjnym.
Mam kilka serwerów osobistych i serwerów roboczych, z którymi muszę się połączyć. Próbuję zrobić coś takiego:
# Ustawienia główne ControlMaster auto ControlPath ~/.ssh/controlmaster/%r@%h:% p ForwardAgent tak Przekaż X11 tak Nr GSSAPIA Uwierzytelnienie Pubkey Uwierzytelnienie tak # Serwery osobiste Gospodarz * Harleypig użytkownika IdentityFile ~ / .ssh / personal_id_rsa Host host 1 Nazwa hosta host1.com Host host 2 Nazwa hosta host2.com # Serwery robocze Gospodarz * Użytkownik alan.young IdentityFile ~ / .ssh / work_id_rsa Praca hosta 1 Nazwa hosta work1.companyserver.com Praca hosta 2 Nazwa hosta work2.companyserver.com Gospodarz * Użytkownik devuser Host dev1 Nazwa hosta dev1.companyserver.com Host dev2 Nazwa hosta dev2.companyserver.com
Dokumenty wydają się wskazywać, że host1 i host2 powinny używać „personal_id_rsa” i harleypig użytkownika. work1, work2, dev1 i dev2 powinny używać „work_id_rsa”, a pierwsze dwa powinny być użytkownikiem „alan.young”, a dev1 i dev2 powinny być użytkownikiem „devuser”
Tak się jednak nie dzieje. Z tym, co „Host *” stawiam na pierwszym miejscu, próbują się połączyć wszystkie następujące hosty. Czy coś źle zrozumiałem lub coś przeoczyłem?
Odpowiedzi:
Z
ssh_config
instrukcji :W twoim przykładzie wszystkie hosty użyją
User harleypig
iIdentityFile ~/.ssh/personal_id_rsa
.Traktuj
Host
dyrektywy z symbolami wieloznacznymi jako awarie: użyj następujących ustawień tylko wtedy, gdy nie zostały jeszcze ustawione. Musisz napisać coś takiego:Możesz umieścić wiele wzorców w
Host
linii, jeśli danego zestawu aliasów hosta nie można dopasować za pomocą symboli wieloznacznych, npHost host* more* outlier
.źródło
Zdecydowanie robisz to źle.
Host *
jako ostatni wpis.Host *
wpisówJeśli twoje maszyny robocze mają format nazwy, który możesz uogólnić, aby kierować reklamy tylko na maszyny robocze, na przykład: machine1.work.com, host.work.com, fileserver.work.com, możesz kierować swoje maszyny robocze jako:
To samo dotyczy twoich komputerów osobistych.
źródło
Host *
na początku pliku wydaje się działać dobrze. Być może fakt, że używasz symbolu wieloznacznego, przebija fakt, że jest to pierwszy wpis przy ustalaniu priorytetów?Host *.work.com
jest to niepoprawna składnia. Działa tylko na odwrót:Host myserver*
Host *subdomain.com
, nie zareaguje.