Trwale przechowuj adresy podczas korzystania z SSH

12

Mam kilka zdalnych serwerów, z którymi łączę się przez terminal. Serwery nie mają domeny, tylko adres IP, który trudno zapamiętać, kiedy mam kilka z nich.

Czy istnieje sposób trwałego przechowywania wartości w terminalu, aby móc wykonać następujące czynności?

server1 = 111.222.111.222

I wpisz polecenia takie jak:

ssh root@server1

zamiast:

ssh [email protected]
zwykły
źródło

Odpowiedzi:

22

W przypadku połączeń SSH możesz utworzyć plik konfiguracyjny użytkownika ~/.ssh/configi umieścić w nim odwzorowania np

Host server1
  Hostname      111.222.111.222

Możesz łatwo dodać inne pola, takie jak Port(dla niestandardowych portów) i User(przydatne, jeśli nazwa użytkownika w systemie zdalnym różni się od nazwy w systemie lokalnym). Zobacz man ssh_configszczegóły.

steeldriver
źródło
14

Tak, po prostu zapisz je w pliku /etc/hosts. Ma następującą składnię:

1.2.3.4 servername additional_servername

Gdzie:

  • 1.2.3.4 to adres IP
  • servername jest imię
  • additional_servername jest opcjonalną nazwą

Po zapisaniu możesz dotrzeć do serwera po jego nazwie.

chaos
źródło
@ niezwykły Jeśli jest to odpowiedź, z którą poszedłeś, rozważ ją zaakceptowanie (znacznik wyboru poniżej przycisków w górę / w dół).
jpmc26,
8

Oczywiście w przypadku konkretnego problemu chcesz postępować zgodnie ze wskazówkami @chaos i @steeldriver, ale w ogólnym przypadku, aby „trwale przechowywać wartości w terminalu”, szukasz zmiennych powłoki. Sposób ich ustawienia będzie zależeć od twojej powłoki (myślę, że echo $SHELLdostarczy odpowiednich informacji).

Jeśli przez „na stałe” masz na myśli „o ile nie wychodzę z tej sesji terminalowej”, możesz po prostu użyć export server1=111.222.111.222polecenia, jeśli używasz bashpowłoki opartej setenv server1 111.222.111.222na bazie ( dla csh/tcshpowłoki opartej na bazie , jeśli dobrze pamiętam). Następnie można uzyskać dostęp do zmiennej poprzedzając go $ : ssh root@$server1.

Jeśli przez „na stałe” masz na myśli „za każdym razem, gdy uruchamiam nowy terminal”, musisz ustawić swoją zmienną w jednym z plików inicjujących powłokę. Np. W $HOME/.bashrcprzypadku bashpowłok bazowanych lub $HOME/.cshrc- prawdopodobnie przy użyciu tej samej składni, jak wspomniano w poprzednim akapicie. Pamiętaj, że będziesz musiał source $HOME/.bashrcpobrać plik inicjujący (np. Lub otworzyć nową powłokę, aby uwzględnić zmiany.

Uwaga: odpowiedź z pamięci może wymagać drobnych korekt.

Skippy le Grand Gourou
źródło
2
Na stałe myślę nawet o ponownym uruchomieniu komputera. Spojrzę na to, może się przydać.
niezwykły
Następnie stosuje się drugą metodę (pliki inicjujące powłoki).
Skippy le Grand Gourou
1

Nie jest to bezpośrednia odpowiedź na pytanie (chaos i steeldriver dostarczyły już to, co moim zdaniem byłoby najlepszym dosłownym rozwiązaniem), ale jeśli w większości przypadków potrzebujesz tylko ssh do jednego użytkownika pod jednym adresem, to patrz na edycję .bash_aliasesplik w katalogu domowym powinny być użyteczne, jak można utworzyć alias dla całej komendy terminala.

DTR
źródło
0

Konkretne odpowiedzi są bardzo dobre.

Zasadniczo jednak, jeśli chcesz mieć pewne ustawienia zdefiniowane / skonfigurowane w powłoce, po prostu napisz skrypt, aby to zrobić, a następnie uruchom go za pomocą sourcelub .kiedy chcesz, aby ta konfiguracja działała.

Jeśli jest to coś, czego chcesz cały czas, możesz go pobrać w pliku .profile (dla powłok logowania) lub w .bashrc dla wszystkich powłok (jeśli używasz bash).

Przy takim podejściu możesz mieć wiele skryptów do konfigurowania różnych środowisk roboczych w razie potrzeby, o ile upewnisz się, że nie nadepną one na siebie, jeśli wywołasz jedno z nich po pierwszym wywołaniu innego.

Joe
źródło