executando um programa localizado no meu computador em um servidor

executando um programa localizado no meu computador em um servidor

Há um servidor no qual posso fazer SSH, mas não consigo usar muito espaço no HDD nele. Quero executar um programa, mas ele é muito grande, então não posso simplesmente copiá-lo para o servidor. Existe uma maneira de executar um programa localizado no meu computador no servidor via SSH?

(meu computador e o servidor estão na mesma LAN, estou executando o Linux Mint e o servidor está executando o CentOS versão 5.9 (Final)).

Responder1

Para que o servidor execute um binário ELF (como o interpretador python) em um de seus processos, ele deve ser capaz de mapeá-lo na memória. Isso só pode ser feito se o arquivo estiver no sistema de arquivos virtual e se o sistema de arquivos que o atende o suportar.

Portanto, você precisa copiar esse pythonexecutável (e suas dependências) para o servidor em um dos sistemas de arquivos montados aos quais você tem acesso de gravação ou montar um sistema de arquivos de sua máquina mint no servidor por meio de algum tipo de sistema de arquivos de rede como sshfs, nfs ou cifs.

Para montar um sistema de arquivos, você precisa de privilégios de superusuário ou pelo menos alguns desses privilégios devem ser concedidos a você (por meio de algum executável suid como fusermount). O administrador desse servidor concederia esse privilégio apenas a usuários confiáveis, pois é poderoso o suficiente para ser abusado e obter privilégios adicionais.

Se você não conseguir montar sistemas de arquivos, outra opção seria executar o software em um sistema operacional emulado, como usar o qemu. A pergunta que eu faria primeiro é: por que você precisa executar isso no servidor? A qual recurso do servidor esse programa deve ter acesso? Você não poderia expor esses recursos à sua máquina mint e executar o software lá? Você também teria que fazer algo assim se o programa fosse executado em uma VM no servidor.

Para iniciar uma VM qemu no servidor como uma cópia de sua máquina mint, supondo que você esteja usando LVM na máquina mint e que haja apenas um sistema de arquivos (o sistema de arquivos raiz) /dev/mint_VG/root, você poderia fazer:

  • Tire um instantâneo do LVM /dev/mint_VG/rootque se tornará o sistema de arquivos raiz da VM no servidor:

    sudo lvcreate -s -L10G -n root_vm_on_server mint_VG/root
    
  • Exporte-o como um dispositivo de bloco de rede:

    sudo nbd-server -C /dev/null 12345 /dev/mint_VG/root_vm_on_server
    
  • transfira suas imagens de kernel e initrd para o servidor:

    scp /boot/{vmlinux,initrd.img}-"$(uname -r)" server:
    
  • No servidor, execute qemucomo (talvez em screenou 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
    

(aqui rodando com 8 CPUs virtuais e 4GB ou RAM, e para começar rodando apenas bashna VM).

Obtenha o console gráfico com um visualizador VNC server-machine:4ou você pode usar um console serial se não precisar de gráficos.

Se você conseguir convencer o administrador do sistema no servidor a permitir o uso kvm(dar-lhe acesso de gravação /dev/kvm), isso o tornará muito mais eficiente.

Responder2

Pelo que eu sei, isso não pode ser feito sem acesso Root :(

MOTIVO: SEGURANÇA: Qual seria a diferença entre um programa rodando localmente no servidor ou outro computador rodando software localizado em seu computador para um servidor.

Se isso pudesse ser feito, seria uma botnet.

Já que estou sendo rejeitado: (É muito frustrante a rapidez com que isso acontece) Ele está querendo que um programa em seu computador LinuxMint seja executado em um servidor SEM que ele instale o programa no SERVIDOR. Como posso executar meus programas no meu computador local para outros servidores com acesso apenas do usuário?

informação relacionada