запуск программы, расположенной на моем компьютере, на сервере

запуск программы, расположенной на моем компьютере, на сервере

Есть сервер, на который я могу зайти по SSH, но я не могу использовать много места на жестком диске. Я хочу запустить программу, но эта программа довольно большая, поэтому я не могу просто скопировать ее на сервер. Есть ли способ запустить программу, которая находится на моем компьютере, на сервере через SSH?

(мой компьютер и сервер находятся в одной локальной сети, я использую Linux Mint, а сервер работает под управлением CentOS версии 5.9 (финальной)).

решение1

Чтобы сервер мог запустить двоичный файл ELF (например, интерпретатор python) в одном из своих процессов, он должен иметь возможность отобразить его в памяти mmap. Он может сделать это только в том случае, если файл находится в виртуальной файловой системе и если обслуживающая его файловая система поддерживает это.

Поэтому вам нужно либо скопировать этот pythonисполняемый файл (и его зависимости) на сервер в одной из смонтированных файловых систем, к которым у вас есть доступ на запись, либо смонтировать файловую систему вашей машины Mint на сервере через какую-либо сетевую файловую систему, например sshfs, nfs или cifs.

Чтобы смонтировать файловую систему, вам нужны права суперпользователя или, по крайней мере, некоторые из этих прав должны быть предоставлены вам (через какой-нибудь исполняемый файл suid, например fusermount). Администратор этого сервера предоставит эту привилегию только доверенным пользователям, поскольку она достаточно мощна, чтобы ею злоупотреблять и получать дополнительные привилегии.

Если вы не можете монтировать файловые системы, другим вариантом будет запуск программного обеспечения в эмулируемой ОС, например, с помощью qemu. Вопрос, который я бы задал первым: зачем вам нужно запускать это на сервере? К какому ресурсу сервера эта программа должна иметь доступ? Не могли бы вы предоставить эти ресурсы вашей машине Mint и запустить программное обеспечение там вместо этого. Вам пришлось бы сделать что-то подобное, если бы программа должна была работать на виртуальной машине на сервере.

Чтобы запустить виртуальную машину QEMU на сервере как копию вашей машины Mint, предполагая, что вы используете LVM на машине Mint и что на ней есть только одна файловая система (корневая файловая система) /dev/mint_VG/root, вы можете сделать следующее:

  • Сделайте снимок LVM, /dev/mint_VG/rootкоторый станет корневой файловой системой виртуальной машины на сервере:

    sudo lvcreate -s -L10G -n root_vm_on_server mint_VG/root
    
  • Экспортируйте его как сетевое блочное устройство:

    sudo nbd-server -C /dev/null 12345 /dev/mint_VG/root_vm_on_server
    
  • перенесите образы ядра и initrd на сервер:

    scp /boot/{vmlinux,initrd.img}-"$(uname -r)" server:
    
  • На сервере запустите qemuкак (возможно, в screenили tmux):

    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
    

(здесь запущено с 8 виртуальными ЦП и 4 ГБ ОЗУ, а для начала просто запущено bashв виртуальной машине).

Получите графическую консоль с программой просмотра VNC server-machine:4или вместо нее можете использовать последовательную консоль, если вам не нужна графика.

Если вы сможете убедить системного администратора на сервере разрешить вам использовать kvm(предоставить вам доступ на запись /dev/kvm), это сделает работу намного эффективнее.

решение2

Насколько я знаю, это невозможно сделать без Root-доступа :(

ОБОСНОВАНИЕ: БЕЗОПАСНОСТЬ: В чем разница между программой, работающей локально на сервере, и другим компьютером, работающим на вашем компьютере, и сервером?

Если бы это можно было сделать, это был бы ботнет.

Поскольку я ПОЛУЧАЮ отрицательные голоса: (Очень раздражает, как быстро это происходит) Он хочет, чтобы программа на его компьютере LinuxMint запускалась на сервере БЕЗ его установки программы на СЕРВЕРЕ. Как я могу запускать свои программы на моем локальном компьютере на других серверах с доступом только пользователя?

Связанный контент