Ausführen eines auf meinem Computer befindlichen Programms auf einem Server

Ausführen eines auf meinem Computer befindlichen Programms auf einem Server

Es gibt einen Server, auf den ich mich per SSH einloggen kann, aber ich kann nicht viel Festplattenspeicher darauf nutzen. Ich möchte ein Programm ausführen, aber dieses Programm ist ziemlich groß, also kann ich es nicht einfach auf den Server kopieren. Gibt es eine Möglichkeit, ein Programm, das sich auf meinem Computer befindet, per SSH auf dem Server auszuführen?

(sowohl mein Computer als auch der Server befinden sich im selben LAN, ich verwende Linux Mint und auf dem Server läuft CentOS Release 5.9 (Final)).

Antwort1

Damit der Server eine ELF-Binärdatei (wie den Python-Interpreter) in einem seiner Prozesse ausführen kann, muss er sie im Speicher mmap-fähig machen können. Dies ist nur möglich, wenn sich die Datei im virtuellen Dateisystem befindet und das Dateisystem, das sie bereitstellt, dies unterstützt.

Sie müssen also entweder diese pythonausführbare Datei (und ihre Abhängigkeiten) auf eines der gemounteten Dateisysteme auf den Server kopieren, auf das Sie Schreibzugriff haben, oder ein Dateisystem Ihrer Mint-Maschine über eine Art Netzwerkdateisystem wie SSHFS, NFS oder CIFS auf dem Server mounten.

Um ein Dateisystem zu mounten, benötigen Sie Superuser-Befugnisse oder zumindest einige dieser Rechte müssen Ihnen gewährt werden (über eine ausführbare Suid-Datei wie fusermount). Der Administrator des Servers würde dieses Recht nur vertrauenswürdigen Benutzern gewähren, da es mächtig genug ist, um missbraucht zu werden und weitere Rechte zu erlangen.

Wenn Sie Dateisysteme nicht mounten können, besteht eine weitere Möglichkeit darin, die Software in einem emulierten Betriebssystem auszuführen, beispielsweise mit qemu. Die Frage, die ich zuerst stellen würde, ist jedoch: Warum müssen Sie das auf dem Server ausführen? Auf welche Ressourcen des Servers muss das Programm Zugriff haben? Könnten Sie diese Ressourcen nicht Ihrer Mint-Maschine zugänglich machen und die Software stattdessen dort ausführen? So etwas müssten Sie auch tun, wenn das Programm auf einer VM auf dem Server ausgeführt werden soll.

/dev/mint_VG/rootUm eine QEMU-VM auf dem Server als Kopie Ihrer Mint-Maschine zu starten, können Sie Folgendes tun (vorausgesetzt, Sie verwenden LVM auf der Mint-Maschine und es gibt dort nur ein Dateisystem (das Root-Dateisystem) :

  • Erstellen Sie einen LVM-Snapshot, /dev/mint_VG/rootder zum Root-Dateisystem der VM auf dem Server wird:

    sudo lvcreate -s -L10G -n root_vm_on_server mint_VG/root
    
  • Exportieren Sie es als Netzwerkblockgerät:

    sudo nbd-server -C /dev/null 12345 /dev/mint_VG/root_vm_on_server
    
  • Übertragen Sie Ihre Kernel- und Initrd-Images auf den Server:

    scp /boot/{vmlinux,initrd.img}-"$(uname -r)" server:
    
  • Führen Sie es auf dem Server qemuals (möglicherweise in screenoder tmux) aus:

    qemu -drive file=nbd:mint-machine:12345,if=virtio -m 4096 \
       -kernel vmlinuz-xxx -initrd initrd.img-xxx \
       -append 'root=/dev/vda ro init=/bin/bash' -monitor stdio -vnc :4 \
       -smp 8,core=8
    

(läuft hier mit 8 virtuellen CPUs und 4 GB RAM und zunächst nur bashin der VM).

Holen Sie sich die grafische Konsole mit einem VNC-Viewer server-machine:4. Wenn Sie keine Grafiken benötigen, können Sie stattdessen auch eine serielle Konsole verwenden.

Wenn Sie den Systemadministrator auf dem Server davon überzeugen können, Ihnen die Verwendung zu gestatten kvm(Ihnen Schreibzugriff darauf zu gewähren /dev/kvm), wird dies die Arbeit wesentlich effizienter machen.

Antwort2

Soweit ich weiß, geht das nicht ohne Root-Zugriff :(

BEGRÜNDUNG: SICHERHEIT: Was wäre der Unterschied, wenn das Programm lokal auf dem Server oder auf einem anderen Computer ausgeführt würde, auf dem Software ausgeführt wird, die sich auf Ihrem Computer oder auf einem Server befindet?

Wenn dies möglich wäre, wäre es ein Botnetz.

Da ich runtergevotet werde: (Sehr frustrierend, wie schnell das passiert) Er möchte, dass ein Programm auf seinem LinuxMint-Computer auf einem Server läuft, OHNE dass er das Programm auf dem SERVER installiert. Wie kann ich meine Programme auf meinem lokalen Computer auf anderen Servern ausführen, wobei nur Benutzerzugriff besteht?

verwandte Informationen