Waren Sie schon einmal in einer Situation, in der Sie per SSH auf einen Remote-Server zugreifen und sofort in ein Verzeichnis wechseln wollten? Ja? Nun, Sie sind auf dem richtigen Weg! Dieses kurze Tutorial beschreibt, wie Sie SSH direkt in ein bestimmtes Verzeichnis unter Linux eingeben. Bedeutung - wir können automatisch in ein bestimmtes Verzeichnis wechseln, wenn wir uns über SSH bei einem Remote-System anmelden. Nicht nur SSH in ein bestimmtes Verzeichnis, es ist sogar möglich, jeden Befehl sofort direkt nach der Verbindung mit dem Remote-Server über SSH auszuführen.
SSH in ein bestimmtes Verzeichnis eines Remote-Linux-Systems
Bevor ich diese Methode kannte, habe ich normalerweise zuerst eine SSH-Verbindung zum Remote-Remote-System mit dem Befehl:
hergestellt$ ssh [email protected]
Und dann cd in ein Verzeichnis wie unten:
$ cd <some-directory>
So wechsle ich in ein Verzeichnis in einem entfernten System. Nicht mehr! Es müssen keine zwei separaten Befehle verwendet werden!!
Zum Beispiel erlaubt mir der folgende Befehl SSH in ein entferntes System (192.168.225.52) und automatisch in ein Verzeichnis namens „dir1“ zu wechseln:
$ ssh -t [email protected] 'cd /home/ostechnix/dir1 ; bash'
Der obige Befehl führt SSH in ein Remote-System (192.168.225.52) und sofort in ein Verzeichnis mit dem Namen '/home/ostechnix/dir1' Verzeichnis und verlassen Sie schließlich die Shell des entfernten Systems.
Hier das -t flag wird verwendet, um eine Pseudo-Terminal-Zuordnung zu erzwingen, die für eine interaktive Shell erforderlich ist. Wenn Sie dieses Flag nicht angeben, wird keine Eingabeaufforderung angezeigt. Und auch, wenn Sie "bash" nicht hinzufügen Am Ende des obigen Befehls wird die Verbindung beendet und die Kontrolle an das lokale System zurückgegeben.
Hier ist die Beispielausgabe des obigen Befehls:
Hier sind ein paar weitere Beispielbefehle für SSH in ein bestimmtes Verzeichnis:
$ ssh -t [email protected] 'cd /home/ostechnix/dir1 ; bash --login'
Hier das --login Flag setzt "bash" als Login-Shell.
Oder,
$ ssh -t [email protected] 'cd /home/ostechnix/dir1 ; exec bash'
Oder,
$ ssh -t [email protected] 'cd /home/ostechnix/dir1 && exec bash -l'
Hier das -l Flag setzt "bash" als Login-Shell.
In den obigen Beispielen habe ich ausdrücklich bash erwähnt als Login-Shell. Weil ich weiß, dass Bash die Standard-Shell in meinem Remote-System ist. Wenn Sie den Shell-Typ auf dem Remote-System nicht kennen, verwenden Sie den folgenden Befehl:
$ ssh -t [email protected] 'cd /home/ostechnix/dir1 && exec $SHELL'
Erstellen Sie ein Verzeichnis auf einem Remote-System und verbinden Sie sich automatisch mit SSH
Wenn Sie versuchen, per SSH in ein Verzeichnis zu gelangen, das im Remote-System nicht existiert, sehen Sie nach erfolgreicher Authentifizierung die folgende Meldung:
bash: line 0: cd: /home/ostechnix/dir2: No such file or directory
Wie Sie sehen können, ist das Verzeichnis mit dem Namen "dir2" im Remote-System nicht verfügbar. Wenn Sie ein Verzeichnis in einem Remote-System erstellen und automatisch über SSH in dieses Verzeichnis wechseln möchten, führen Sie einfach den folgenden Befehl von Ihrem lokalen System aus:
$ ssh -t [email protected] 'mkdir -p dir2 ; cd /home/ostechnix/dir2 ; bash --login'
Änderungen dauerhaft machen
Wenn Sie die obigen Befehle nicht jedes Mal manuell eingeben möchten, fügen Sie einfach die Befehle hinzu, die Sie ausführen möchten, nachdem Sie sich mit einem SSH-Server auf der ~/.bashrc des Remote-Systems verbunden haben oder ~/.bash_profile oder ~/.profile Dateien.
Bearbeiten Sie bashrc Datei:
$ nano ~/.bashrc
Fügen Sie die Befehle einzeln hinzu. In meinem Fall füge ich die folgende Zeile hinzu:
cd /home/ostechnix/dir1 >& /dev/null
Bitte beachten Sie, dass Sie diese Zeile zum .bash_profile des Remote-Systems hinzufügen sollten oder .bashrc oder .profil Datei, nicht in Ihrem lokalen System. Drücken Sie Strg+O und drücken Sie ENTER zum Speichern und drücken Sie Strg+X um die Datei zu schließen.
Führen Sie abschließend den folgenden Befehl aus, um die Änderungen zu aktualisieren:
$ source ~/.bashrc
Von nun an wird bei jeder Anmeldung (entweder über SSH oder direkt) der cd-Befehl ausgeführt und Sie landen automatisch im Verzeichnis "/home/ostechnix/dir1".
Befehle über SSH auf Remote-Linux-Systemen ausführen
Wie ich bereits sagte, besteht dieser Trick nicht nur darin, nach dem Verbinden mit einem Remote-System in das Verzeichnis zu wechseln. Sie können diese Methode auch verwenden, um andere Befehle auszuführen.
Der folgende Befehl bringt Sie beispielsweise in das Verzeichnis „/home/ostechnix/dir1“ und führt dann den Befehl „uname -a“ aus.
$ ssh -t [email protected] 'cd /home/ostechnix/dir1 && uname -a && exec $SHELL'
Weitere Beispiele zum Ausführen von Befehlen über SSH auf entfernten Systemen finden Sie in der folgenden Anleitung.
- Befehle auf Remote-Linux-Systemen über SSH ausführen
Hoffe das hilft.
Verwandte Lektüre:
- How To cd und ls in einem Befehl
- Wie man cp oder mv und cd in einem Befehl erstellt
- SSH-Zugriff für einen bestimmten Benutzer oder eine bestimmte Gruppe in Linux zulassen oder verweigern