Dynamisches Laden lokaler Shell-Aliase in die SSH-Sitzung

Dynamisches Laden lokaler Shell-Aliase in die SSH-Sitzung

Wenn ich mich bei einem Rechner anmelde mitsshIch wünsche meinemAliaseUndFunktionensind da. Mit anderen Worten: Wenn ich mich an einem Computer anmelde, möchte ich meine Befehlskürzel verwenden können.

Ich brauche es dynamisch. Jedes Mal, wenn ich mich anmelde, möchte ich aktualisierte Aliase haben.

Hinweise: Sehr oft erfolgt die Anmeldung zum ersten Mal, ohne dass der Rechner und die dort vorhandenen Dateien bekannt sind. Manchmal ist es eine einmalige Anmeldung. Nur ein Mal für diesen Rechner. Dieser muss anschließend bereinigt werden, und die vorherige Konfiguration muss ebenfalls wiederhergestellt werden.

Antwort1

Sie können Ihre Datei vorübergehend .bashrcunter einem anderen Namen auf Ihren Remote-Computer kopieren. Verwenden Sie beispielsweise .bashrc_temp:

user@local$ scp .bashrc user@remote:~/.bashrc_temp

Anschließend können Sie sich beim Remote-Rechner anmelden:

user@local$ ssh user@remote

Undsourcedie Datei .bashrc_temp:

user@remote$ source ~/.bashrc_temp

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

Das Kopieren der Datei und die Anmeldung am Remote-Computer können mit einer Bash-Funktion erreicht werden:

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

Aktualisieren:

.bashrcSie können auch erwägen, die Datei /tmpauf Ihren Remotecomputer und die Quelle zu kopieren /tmp/.bashrc_temp.

Aktualisierung 2:

Sie können sich am Remote-Computer anmelden, indem Siessh -t. Dadurch wird automatisch Ihre Zeit verwendet .bashrc. Aktualisierte Funktion s():

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

Antwort2

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

sshrc funktioniert genau wie ssh, aber es bezieht nach der Remote-Anmeldung auch ~/.sshrc.

$ echo "echo welcome" > ~/.sshrc
$ sshrc me@myserver
welcome

$ echo "alias ..='cd ..'" > ~/.sshrc
$ sshrc me@myserver
$ type ..
.. is aliased to `cd ..'

Damit können Sie Umgebungsvariablen festlegen, Funktionen definieren und Post-Login-Befehle ausführen. So einfach ist das und es hat keine Auswirkungen auf andere Benutzer auf dem Server – selbst wenn diese ebenfalls sshrc verwenden. Lesen Sie weiter, um eine erweiterte Konfiguration zu erhalten.

Antwort3

jens-na hat eine hervorragende Antwort gegeben. Ich habe ein bisschen Zeit investiert und es ein bisschen überarbeitet, damit es ein kleines bisschen besser funktioniert. Auf diese Weise können Sie beliebige Parameter an SSH weitergeben, z. B. Portnummern. Der Unterschied besteht darin, dass sshzum Hochladen der .bashrcDatei der Befehl verwendet wird, anstatt scp, das andere Befehlsparameternamen verwendet.

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

sshs() {
        ssh $@ "cat > /tmp/.bashrc_temp" < ~/.bashrc_remote
        ssh -t $@ "bash --rcfile /tmp/.bashrc_temp ; rm /tmp/.bashrc_temp"
}

Führen Sie es wie folgt aus:

sshs user@server

Der Name ' sshs' steht für "SSH-Quelle". Verwenden Sie ihn, sshwenn Sie keine Quelle verwenden möchten, und verwenden Sie ihn, sshswenn Sie dies möchten.

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

Antwort4

Das ist, was mir eingefallen ist. Damit können Sie eine normale RC-Datei verwalten, aber auch alles in einer SSH-Verbindung erledigen (Sie müssen sich also nur einmal anmelden, anstatt zuerst ein SCP auszuführen).

#copies some environment over to the remote machine
function ssh() {
  /usr/bin/ssh -t $* "echo `base64 -i ~/bin/remote_ssh_env.sh` | base64 --decode > /tmp/remote_ssh_env.sh; bash --rcfile /tmp/remote_ssh_env.sh"
}

Ich bin mir allerdings nicht sicher, wie groß diese RC-Datei sein kann, da sie irgendwann ihr Maximum erreichen könnte.

verwandte Informationen