Angesichts des Szenarios:
- Remote- Computer: SSH-Server; Benutzer hat keine Administratorrechte;
- Lokaler Computer: SSH-Client; Benutzer hat Administratorrechte.
Wenn Benutzer , um die Anmeldung Remote von lokalen , zu interagieren möchte remote auf eine Shell nicht installiert mit Fernbedienung , wie können Benutzer erreichen dies allein?
Beispiel: Der Benutzer verwendet fish auf lokal und möchte ihn auch auf remote verwenden , aber remote hat nur bash und zsh installiert.
shell
ssh
not-root-user
sampablokuper
quelle
quelle
Antworten:
Installieren Sie Ihre Lieblings-Shell auf dem Remote-Computer. Dazu benötigen Sie keine Administratorrechte. Sie können Programme in Ihrem Home-Verzeichnis installieren. Dies ist nur weniger praktisch. Siehe Installation auf Debian 5 32-Bit ohne Root , Wie installiere ich ein Programm lokal ohne Sudo-Berechtigungen? , Programme und andere Fragen im Auge behalten .
Wenn Sie sich automatisch bei einer Shell anmelden möchten, die Sie selbst installiert haben, anstatt der Standard-Shell , lesen Sie zsh-Standard-Shell ohne Root-Zugriff erstellen
Wenn Sie nur entfernte Dateien bearbeiten möchten, können Sie den Remote-Verzeichnisbaum mit SSHFS auf Ihrem lokalen Computer bereitstellen .
Wenn Sie keinen Platz in Ihrem Home-Verzeichnis haben oder es sich um ein freigegebenes Konto handelt, können Sie mit dem Einrichten eines Reverse-SSH-Tunnels auskommen und Ihren lokalen Verzeichnisbaum mit SSHFS auf dem Remotecomputer bereitstellen , vorausgesetzt, auf beiden Computern wird dieselbe Architektur ausgeführt ( gleiche Unix-Variante auf demselben Prozessortyp). Wenn die beiden Computer über inkompatible Architekturen verfügen, können Sie die Programme für die Remote-Architektur sogar in Ihrem lokalen Home-Verzeichnis installieren. Dies ist möglicherweise nicht sehr praktisch, da Sie die Pfade korrekt einrichten müssen, damit die Programme ihre Bibliotheken, Konfigurationsdateien und anderen Datendateien finden.
Emacs ' eshell ist mit Tramp kompatibel : Wenn Sie in Eshell in ein Remote-Verzeichnis wechseln, führen Sie Befehle auf dem Remote-Computer aus.
quelle
Einfache Antwort: Nein, Sie können auf einer Remote-Box kein Programm verwenden, das nicht auf der Remote-Box installiert ist.
Problemumgehung: Sie benötigen keine Administratorrechte, um eine Shell auf dem Remote-System zu installieren. Sie können es in Ihrem Home-Verzeichnis installieren, müssen es aber wahrscheinlich aus den Quellen kompilieren. Normalerweise mit so etwas wie
configure --prefix=${HOME}/local
Letzte Anmerkung: Sie können Ihre Standard-Shell nicht in eine nicht "offizielle" ändern (siehe
/etc/shells
), aber Sie können so etwasexec fish
in Ihre einfügen.bashrc
quelle
Der Benutzer kann sshfs verwenden , um sein Remote-$ HOME auf seinem lokalen Computer bereitzustellen . In einem solchen Szenario würde der Benutzer die Shell seiner Wahl nicht direkt auf dem Remotecomputer verwenden, aber dennoch besser als nichts.
quelle
Der grundlegende Ansatz besteht darin, die ausführbare Shell-Datei mit auf den Remote-Host zu kopieren und sie
scp
dann mitssh
zDas
-t
wird benötigt, damitssh
ein tty zugewiesen wird, was beim Ausführen eines Remote-Befehls standardmäßig nicht der Fall ist.Dies setzt voraus, dass auf Ihrem Remote-Host dasselbe Betriebssystem ausgeführt wird. Wenn nicht, möchten Sie das Remote-Betriebssystem herausfinden und eine (möglicherweise statische) Binärdatei kompilieren, die Sie kopieren können.
quelle
Die offensichtliche Antwort "Installieren Sie den Befehl auf dem Remotecomputer" ist die sauberste Lösung, daher sollten wir sie nicht ignorieren:
Wenn dies möglich ist, um den Befehl als root zu installieren, z. B. mit
sudo apt-get install fish
, kannder Befehl folgendermaßen ausgeführt werden:
ssh remote -t fish
Die Frage ist, was zu tun ist, wenn wir keinen Befehl auf dem Remotecomputer installieren können.
Genauer gesagt handelt es sich um den Fall, dass wir einen Befehl nicht als root installieren können .
Das heißt nicht, dass wir überhaupt nicht installieren können!
Es ist weiterhin möglich, den Befehl im Home-Verzeichnis zu installieren, indem Sie ihn aus der Quelle erstellen .
Dies hat den Vorteil, dass alle zugehörigen Unterstützungsdateien , die möglicherweise mit einem Befehl geliefert werden, und deren Suche durch das Programm berücksichtigt werden . Im
fish
Shell-Beispiel sind dies die Vervollständigungsfunktionen usw., die alle nicht verfügbar sind, wenn wir nur diefish
Binärdatei kopieren .Das Erstellen eines Befehls aus dem Quellcode erfordert Entwicklungstools und Entwicklungsdateien der verwendeten Bibliotheken, was möglicherweise zu kompliziert ist.
Viele Programme enthalten jedoch alles, was sie benötigen, in den Quellen, sodass es möglicherweise einfach ist. Schwer zu sagen, aber man kann es einfach versuchen.
Um einen Befehl im Home-Verzeichnis zu installieren ,
configure
wird der zu installierende Pfad mitgeliefert, der in den Build-Anweisungen überprüft werden muss. Z.B:Beachten Sie, dass dies nicht
sudo make install
wie üblich der Fall ist, da es den Sinn der lokalen Installation hat, hier kein Sudo zu benötigen.Allgemeine Informationen zum Installieren von Programmen aus dem Quellcode finden Sie unter askubuntu.SE: Wie installiere ich eine .tar.gz- (oder .tar.bz2-) Datei?
quelle
Ich glaube nicht, dass Sie eine Shell ausführen können, die sich auf einem Computer auf einem anderen befindet. Die einzige Möglichkeit, es auf dem Remote-Computer auszuführen, besteht darin, es zu installieren.
quelle