Konfiguracja SSH: zastąp domyślną nazwę użytkownika


271

Czy można skonfigurować, sshaby wiedzieć, jaka powinna być moja nazwa użytkownika?

Domyślnie używa bieżącej nazwy użytkownika, co w moim przypadku jest nieprawidłowe.

Jestem na laptopie wypożyczonym, a moja nazwa użytkownika to loaner, ale chcę powiedzieć, sshże moja nazwa użytkownika to buck.

Punkty bonusowe: moja nazwa użytkownika w domu to bgolemon. Gdybym mógł skonfigurować nazwę użytkownika dla hosta, byłoby to jeszcze lepsze.


3
Stack Overflow to strona z pytaniami dotyczącymi programowania i programowania. To pytanie wydaje się nie na temat, ponieważ nie dotyczy programowania ani programowania. Zobacz o jakie tematy mogę pytać tutaj w Centrum pomocy. Być może lepiej byłoby zapytać Super User lub Unix & Linux Stack Exchange . Zobacz także Gdzie mogę zadawać pytania dotyczące deweloperów?
jww

3
To takie dobre pytanie!
Nicolas S.Xu

zaakceptowana odpowiedź tutaj jest lepszej jakości niż superużytkownik: zawiera globalne (domyślne) stosowanie dyrektyw użytkownika i dodane komentarze wyjaśniają priorytety dyrektywy
Rondo

Odpowiedzi:


449

Utwórz plik o nazwie configinside ~/.ssh. Wewnątrz pliku możesz dodać:

Host *
    User buck

Lub dodaj

Host example
    HostName example.net
    User buck

Drugi przykład ustawia nazwę użytkownika i jest specyficzny dla nazwy hosta, podczas gdy pierwszy przykład ustawia tylko nazwę użytkownika. A kiedy używasz drugiego, nie musisz go używać ssh example.net; ssh exampleto wystarczy.


134
Prawdopodobnie warto zauważyć, że zgodnie z man ssh_config: Since the first obtained value for each parameter is used, more host-specific declarations should be given near the beginning of the file, and general defaults at the end.Więc Host *sekcja powinna prawdopodobnie przejść na końcu.
quodlibetor

9
Warto zauważyć, że plik konfiguracyjny będzie przetwarzany od góry do dołu, zapełniając każde pole (użytkownik, nazwa_hosta ...) i pomijając powtarzające się pola, jeśli dopasowanych jest wiele dyrektyw hosta. W przypadku zdefiniowania Host *, User jdoena górze, a następnie określić Host example, HostName abc.example.com, User root, próbując ssh examplebędzie taka sama jak w przypadku wpisania ssh jdoe@abc.example.com. Aby zdefiniować wartości domyślne ssh (tj. User root), Host *Dyrektywa musi znajdować się na dole pliku konfiguracyjnego.
mr.b

17
Nie zapomnij także chmod 600 na .ssh / config
Sven

Zauważ, że jeśli istnieje wiele nazw hostów, dla których serwer jest dostępny (lub jeśli chcesz mieć tę samą domyślną nazwę użytkownika dla wielu serwerów), powinieneś zmienić pierwszy wiersz Host server1.local example.net *.example.orgi po prostu go pozbyć HostName.
Lèse majesté

44

Jeśli chcesz tylko ssh kilka razy, na przykład na pożyczonym lub współdzielonym komputerze, spróbuj:

ssh buck@hostname

lub

ssh -l buck hostname

1
Dzięki, ale już to znam. Określanie buck @ host wydaje się zbędne, gdy jest zawsze buck @ host. Próbuję znaleźć metodę reprezentowania tych informacji w pliku konfiguracyjnym.
bukzor

1
Czy zastanawiałeś się nad czymś tak prostym, jak alias sshhostname = 'ssh buck @ hostname'?
gpojd

Tak, mam. Odpowiedź Learath2 jest dokładnie tym, czego szukałam. Mogę to sprawdzić w moim repozytorium plików dotfiles i nie martwić się tym więcej.
bukzor

Wziąłem alias root, ponieważ łączę się z komputerami dla różnych klientów, gdzie moja nazwa użytkownika jest inna w każdym środowisku klienta. Innym podejściem, jak sądzę, byłoby posiadanie różnych lokalnych środowisk powłoki, aby ustawić ssh i powiązane ustawienia dla każdego klienta. Lub maszynę wirtualną na klienta.
Nick Spacek

6

man ssh_config mówi

Użytkownik

Określa użytkownika do zalogowania się jako. Może to być przydatne, gdy na różnych komputerach używana jest inna nazwa użytkownika. To oszczędza kłopotów z koniecznością podawania nazwy użytkownika w wierszu poleceń.


1
„Tożsamość” w tym przypadku jest równoważna zwykłemu użyciu „hasła”. Są to dane, które uwierzytelnia cię, ale nie pomaga określić, kim są próby uwierzytelnienia jak .
bukzor

Ups Jest tam również ustawienie użytkownika.
nes1983

0

Możesz użyć skrótu. Utwórz plik .bashrc w katalogu domowym. Tam możesz dodać następujące elementy:

alias sshb="ssh buck@host"

Aby udostępnić alias w swoim terminalu, możesz zamknąć i otworzyć terminal lub uruchomić

source ~/.bashrc

Następnie możesz połączyć się, wpisując:

sshb

1
Jest to świetne dla jednego konkretnego hosta, ale ponieważ ciągle łączę się z bilionem różnych serwerów, jest to raczej bezużyteczne. Raczej skonfiguruj .ssh/configz odpowiednimi ustawieniami. Przyszedłem szukać *dzikiej przyrody (i dowiedziałem się, że powinna być na dole).
mazunki

0

Istnieje klejnot Ruby, który łączy się z sshplikiem konfiguracyjnym, który jest nazywany sshez.

Wszystko, co musisz zrobić sshez <alias> username@example.com -p <port-number>, to połączyć się za pomocą ssh <alias>. Jest to również przydatne, ponieważ możesz wyświetlić listę swoich aliasów sshez listi łatwo je usunąć za pomocą sshez remove alias.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.