Ich habe festgestellt, dass ich mit der neuen Firma, mit der ich zusammenarbeite, häufig auf Linux-Server mit relativ kurzer Lebensdauer zugreifen muss. Auf jedem dieser Server habe ich ein Konto, aber jedes Mal, wenn ein neues erstellt wird, muss ich die Mühe machen, über meine .bashrc-Datei zu übertragen. Es ist jedoch möglich, dass der Server in ungefähr einem Monat nicht mehr verfügbar ist. Ich muss auch für kurze Zeiträume (Minuten) auf viele andere Server zugreifen, bei denen es sich nicht lohnt, Daten über meine .bashrc-Datei zu übertragen. Da ich jedoch an vielen Servern arbeite, bedeutet dies eine Menge Zeitverschwendung.
Ich möchte nichts an den Servern ändern, aber ich habe mich gefragt, ob es eine Möglichkeit gibt, eine .bashrc-Datei für jede Verbindung zu erstellen. Wenn ich also eine SSH-Verbindung zu einem Server herstellte, wurden meine Einstellungen für diese Sitzung verwendet.
Wenn dies möglich ist, wäre es schön, wenn ich das Gleiche mit anderen Konfigurationsdateien wie gitconfig-Dateien machen könnte.
quelle
Antworten:
Ich denke, was Sie wollen, ist (in Ihrer .ssh / config auf dem Computer, von dem aus Sie eine Verbindung herstellen):
dann können Sie herausführen mit:
und sei auf deinem fröhlichen Weg. LocalCommand führt den Befehl auf dem Server aus, zu dem Sie eine Verbindung herstellen, wenn er dort ankommt, unmittelbar vor Ihrer eigentlichen Sitzung.
Ich würde auch sicherstellen, dass sshds auf den Servern mit konfiguriert sind
PermitLocalCommand yes
Es gibt viele Möglichkeiten, wie Sie den LocalCommand optimieren können, damit er in Ihrer spezifischen Umgebung funktioniert - Sie können ihn beispielsweise von einem internen Webserver aus einrollen oder von einem nfs-Mount ziehen.
quelle
; source /path/to/.bashrc
nach dem scp-Befehl hinzufügen , damit er automatisch bezogen wird. Schließlich ist ein nicht sehr wichtiger Nachteil dieser Methode, dass ich mein Passwort zweimal eingeben muss. Aber am Ende hat es funktioniert, also danke.source /path/to/.bashrc
wird auf dem Computer ausgeführt, von dem aus Sie eine Verbindung herstellen. Befehle inLocalCommand
haben keinen Zugriff auf die SSH-Sitzung.Ich denke, Sie suchen nach sshrc: https://github.com/Russell91/sshrc
Hiermit können Sie Umgebungsvariablen festlegen, Funktionen definieren und Befehle nach der Anmeldung ausführen. So einfach ist das und wirkt sich nicht auf andere Benutzer auf dem Server aus - auch wenn sie sshrc ebenfalls verwenden. Lesen Sie für eine erweiterte Konfiguration weiter.
quelle
Wenn Sie den Server noch nie zuvor aufgerufen haben, ist in ~ / .ssh / known_hosts kein Eintrag dafür vorhanden.
Sie können mit "ssh-keygen -F" nach einem bestimmten bekannten Host suchen, aber Sie müssen diese Ausgabe (grep) testen, da ssh-keygen bei einem Fehler nicht false zurückgibt. Beachten Sie, dass bei Verweisen auf einen Host durch unterschiedliche Bezeichner (IP-Adresse, Hostname, FQDN) diese jeweils als separate Instanzen behandelt werden.
Sie können einen Wrapper für ssh schreiben, der Ihre Benutzerumgebung beim ersten Anmelden auf diesen Host überträgt:
ssh-newenv () {if! ssh-keygen -F $ 1 | grep -q "^ # host $ 1 gefunden:"; dann rsync ~ / .bashrc ~ / .bash_profile ~ / .bash_logout $ 1:.; fi; SSH $ 1; }
Wenn Sie dies robuster machen möchten, können Sie überprüfen, ob auf dem Remote-Host eine bekannte Umgebungsdatei, ein Hash oder eine andere Markierung vorhanden ist.
quelle
Ich weiß nicht, ob es eine .bashrc-Datei pro Sitzung gibt.
Eine andere Lösung wäre, ein kleines Skript zu schreiben, das alle Ihre Lieblingskonfigurationen in Ihren neuen Ausgangsordner überträgt.
Vielleicht erstelle einfach einen Ordner mit all deinen Configs mit Pfaden und übertrage sie einfach mit scp
mögen
und dann a
Das spart Zeit.
quelle
Ich denke nicht, dass das möglich ist, da ssh nichts mit deinem zu tun hat
.bashrc
. Es ist die Shell, die diese Datei lädt, nicht ssh.Einige Ideen:
SendEnv
Option aktivieren (ssh_config
weitere Informationen finden Sie auf der Manpage). Wenn der Server korrekt eingerichtet ist (dhAcceptEnv
sshd_config enthält den entsprechenden Wert), können SieSendEnv
Ihre Umgebungsvariablen auf den Remote-Host kopieren.ProxyCommand
Einstellung (siehessh_config
Manpage) missbrauchen, um Ihre.bashrc
oder andere Dateien zu senden, bevor Sie eine Verbindung zum Remote-Host herstellen. Das würde allerdings einige Tests erfordern. Stellen Sie sich auch darauf ein, dass dies die Funktion von scp beeinträchtigt.quelle
Ich denke, dass https://github.com/fsquillace/pearl-ssh das tut, was Sie brauchen.
Ich habe es vor langer Zeit geschrieben, bevor sshrc geboren wurde, und es hat mehr Vorteile im Vergleich zu sshrc:
Zum Beispiel:
quelle