Speichern Sie Adressen dauerhaft, wenn Sie SSH verwenden


12

Ich habe ein paar Remote-Server, mit denen ich über das Terminal verbunden bin. Die Server haben keine Domain, nur eine IP-Adresse, die ich mir bei einigen schwer merken kann.

Gibt es eine Möglichkeit, Werte dauerhaft im Terminal zu speichern, sodass ich Folgendes tun kann?

server1 = 111.222.111.222

Und tippe Befehle wie:

ssh root@server1

Anstatt von:

ssh root@111.222.111.222

Antworten:


22

Für SSH-Verbindungen können Sie eine Benutzerkonfigurationsdatei erstellen ~/.ssh/configund die Zuordnungen dort platzieren, z

Host server1
  Hostname      111.222.111.222

Sie können problemlos andere Felder hinzufügen, z. B. Port(für nicht standardmäßige Ports) und User(nützlich, wenn sich Ihr Benutzername auf dem fernen System von dem auf dem lokalen System unterscheidet). Siehe man ssh_configfür weitere Informationen.


14

Ja, schreiben Sie sie einfach in die Datei /etc/hosts. Es hat die folgende Syntax:

1.2.3.4 servername additional_servername

Wo:

  • 1.2.3.4 ist die IP-Adresse
  • servername ist der Name
  • additional_servername ist ein optionaler Name

Nach dem Speichern können Sie den Server über seinen Namen erreichen.


@theusual Wenn dies die Antwort ist, mit der Sie geantwortet haben, ziehen Sie bitte in Betracht, sie zu akzeptieren (Häkchen unter den Schaltflächen für die Aufwärts- / Abwärtsabstimmung).
jpmc26

8

Natürlich möchten Sie für Ihr spezielles Problem die Hinweise von @chaos und @steeldriver befolgen, aber im allgemeinen Fall möchten Sie, um "Werte dauerhaft im Terminal zu speichern", Shell-Variablen verwenden. Wie sie eingestellt werden, hängt von Ihrer Shell ab (ich schätze, echo $SHELLsie liefert die relevanten Informationen).

Wenn mit "permanent" "gemeint ist, solange ich diese Terminalsitzung nicht beende", können Sie den export server1=111.222.111.222Befehl einfach verwenden, wenn Sie eine auf bash-basierende Shell verwenden ( setenv server1 111.222.111.222für eine auf csh/tcsh-basierende Shell, wenn ich mich richtig erinnere). Dann können Sie Ihre Variable zugreifen , indem sie mit prefixing $ : ssh root@$server1.

Wenn Sie mit "permanent" "jedes Mal, wenn ich ein neues Terminal starte" meinen, müssen Sie Ihre Variable in einer der Shell-Init-Dateien festlegen. ZB in $HOME/.bashrcfor- bashbasierten Shells oder $HOME/.cshrc- vermutlich unter Verwendung der gleichen Syntax wie im vorherigen Absatz erwähnt. Beachten Sie, dass Sie die Init-Datei als Quelle angeben müssen (z. B. source $HOME/.bashrcoder eine neue Shell öffnen müssen, damit Änderungen berücksichtigt werden.

NB: Antwort aus dem Speicher, erfordert möglicherweise einige kleine Anpassungen.


2
Durch permanente I mentierung wird auch dann ein Neustart des Rechners durchgeführt. Ich schaue mir das an, es könnte sich irgendwann als nützlich erweisen.
theusual

Dann gilt die zweite Methode (Shell-Init-Dateien).
Skippy le Grand Gourou

1

Keine direkte Antwort auf die Frage (Chaos und Steeldriver haben bereits die meiner Meinung nach besten wörtlichen Lösungen geliefert), aber wenn Sie in den meisten Fällen nur einen Benutzer an eine Adresse senden müssen, sollten Sie sich die Bearbeitung ansehen Die .bash_aliasesDatei in Ihrem Ausgangsverzeichnis sollte nützlich sein, da Sie einen Alias ​​für den gesamten Terminalbefehl erstellen können.


0

Die konkreten Antworten sind sehr gut.

Wenn Sie jedoch einige Dinge in einer Shell definieren / einrichten möchten, schreiben Sie einfach ein Skript, um dies zu tun, und führen Sie es dann mit sourceoder aus, .wenn Sie möchten, dass das Setup wirksam wird.

Wenn Sie es immer wollen, können Sie es in .profile (für Login-Shells) oder in .bashrc für alle Shells (wenn Sie bash verwenden) speichern.

Bei einem Ansatz wie diesem können Sie mehrere Skripts zum Einrichten unterschiedlicher Arbeitsumgebungen verwenden, sofern Sie sicherstellen, dass sie nicht aufeinander zugehen, wenn Sie eines von ihnen aufrufen, nachdem Sie ein anderes zuerst aufgerufen haben.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.