GNU/Linux >> LINUX-Kenntnisse >  >> Linux

lokale Shell-Aliase dynamisch in die SSH-Sitzung laden

Sie können Ihren .bashrc vorübergehend kopieren mit einem anderen Namen auf Ihren Remote-Rechner. Verwenden Sie zum Beispiel .bashrc_temp :

[email protected]$ scp .bashrc [email protected]:~/.bashrc_temp

Danach können Sie sich auf dem Remote-Rechner anmelden:

[email protected]$ ssh [email protected]

und source die Datei .bashrc_temp :

[email protected]$ source ~/.bashrc_temp

Jetzt können Sie Ihren .bashrc verwenden und Ihre Funktionen. Wenn Sie mit Ihrer Arbeit fertig sind, können Sie die Datei ~/.bashrc_temp auf dem entfernten Rechner entfernen und sich abmelden.

Das Kopieren der Datei und die Anmeldung am Remote-Rechner kann mit einer Bash-Funktion erreicht werden:

# copy the .bashrc to the remote machine 
# and log into the remote machine.
# parameter $1: [email protected]
function s() {
  scp ~/.bashrc $1:~/.bashrc_temp
  ssh $1
}

Aktualisieren :

Sie können auch den .bashrc kopieren bis /tmp auf Ihrem Remote-Rechner und Quelle /tmp/.bashrc_temp .

Aktualisierung 2 :

Sie können sich mit ssh -t am Remote-Computer anmelden. Dadurch wird automatisch Ihr temporärer .bashrc verwendet . Aktualisierte Funktion s() :

function s() {
  scp ~/.bashrc $1:/tmp/.bashrc_temp
  ssh -t $1 "bash --rcfile /tmp/.bashrc_temp ; rm /tmp/.bashrc_temp"
}

jens-na hat eine ausgezeichnete Antwort gegeben. Ich verbrachte ein bisschen Zeit und überarbeitete es ein bisschen, um ein bisschen besser zu arbeiten. Auf diese Weise können Sie beliebige Parameter an SSH weitergeben, z. B. Portnummern. Der Unterschied besteht darin, dass es den ssh verwendet Befehl zum Hochladen des .bashrc Datei anstelle von scp , die andere Befehlsparameternamen verwendet.

Sie werden auch feststellen, dass eine andere Datei hochgeladen wird, .bashrc_remote , sodass Sie genau auswählen können, was Sie auf Remote-Servern beziehen möchten, anstatt alles

sshs() {
        ssh [email protected] "cat > /tmp/.bashrc_temp" < ~/.bashrc_remote
        ssh -t [email protected] "bash --rcfile /tmp/.bashrc_temp ; rm /tmp/.bashrc_temp"
}

Führen Sie es wie folgt aus:

sshs [email protected]

Der Name „sshs ' steht für "SSH-Quelle". Verwenden Sie ssh wenn Sie nicht sourcen möchten, und verwenden Sie sshs wenn du das tust.

https://gist.github.com/jonahbron/5549848


Ich denke, sshrc ist das, wonach Sie suchen:https://github.com/Russell91/sshrc

sshrc funktioniert genauso wie ssh, bezieht aber auch ~/.sshrc, nachdem man sich aus der Ferne angemeldet hat.

$ echo "echo welcome" > ~/.sshrc
$ sshrc [email protected]
welcome

$ echo "alias ..='cd ..'" > ~/.sshrc
$ sshrc [email protected]
$ type ..
.. is aliased to `cd ..'

Sie können dies verwenden, um Umgebungsvariablen festzulegen, Funktionen zu definieren und Post-Login-Befehle auszuführen. Es ist so einfach und hat keine Auswirkungen auf andere Benutzer auf dem Server - selbst wenn sie ebenfalls sshrc verwenden. Für eine erweiterte Konfiguration lesen Sie weiter.


Linux
  1. Befehlszeilenaliase in der Linux-Shell

  2. Unerwartetes Verhalten eines Shell-Skripts?

  3. Ssh – Ssh-Zugriffsversuche protokollieren?

  4. Halten Sie die SSH-Sitzung am Leben

  5. SSH ohne Beschaffung von .bashrc

Wie kann man eine nicht reagierende SSH-Verbindung unter Linux beenden?

Ssh – Beschränken eines Ssh/scp/sftp-Benutzers auf ein Verzeichnis?

Wie erkennt man, ob die Shell von ssh aus gesteuert wird?

Secure Shell:SSH-Client des Chrome-Webbrowsers

Verhindern Sie, dass ssh Shell-Skriptparameter auflöst

Zugriff nur über SSH-Tunneling