executando um programa localizado no meu computador em um servidor

3

Existe um servidor no qual eu posso conectar o SSH, mas não posso usar muito espaço no disco rígido. Eu quero executar um programa, mas este programa é muito grande, então não posso simplesmente copiá-lo para o servidor. Existe uma maneira de executar um programa que está localizado no meu computador no servidor via SSH?

(tanto meu computador quanto o servidor estão na mesma LAN, eu estou executando o Linux Mint, e o servidor está rodando a versão 5.9 (Final) do CentOS).

    
por elyashiv 02.10.2013 / 14:09

2 respostas

3

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

Então, você precisa copiar esse python executável (e suas dependências) para o servidor em um dos sistemas de arquivos montados nos quais você tem acesso de gravação ou montar um sistema de arquivos de sua máquina de hortelã no servidor por 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ê (via algum executável suid como fusermount ). O administrador desse servidor só concederia esse privilégio 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 SO emulado, como qemu . A pergunta que gostaria de fazer primeiro é: por que você precisa executar isso no servidor? Qual recurso do servidor esse programa deve ter acesso? Você não pode expor esses recursos para a sua máquina de hortelã e executar o software lá em vez disso. Você teria que fazer algo assim também se o programa fosse executado em uma VM no servidor.

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

  • Faça um instantâneo LVM de /dev/mint_VG/root , que se tornará o sistema de arquivos raiz da VM no servidor:

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

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

    scp /boot/{vmlinux,initrd.img}-"$(uname -r)" server:
    
  • No servidor, execute qemu as (talvez em screen ou 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 como um começo apenas rodando bash na VM).

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

Se você puder convencer o administrador do sistema no servidor para permitir que você use kvm (dê a você acesso de gravação a /dev/kvm ), isso o tornará muito mais eficiente.

    
por 02.10.2013 / 15:49
-1

Tanto quanto eu sei que não pode ser feito sem acesso root :(

RACIOCÍNIO: SEGURANÇA: Qual seria a diferença do programa sendo executado localmente no servidor ou de outro computador executando o software localizado em seu computador para um servidor?

Se isso pudesse ser feito, seria uma botnet.

Desde que eu estou indo para baixo votou: (Muito frustrante a rapidez com que isso acontece) Ele está querendo que um programa em seu computador LinuxMint seja executado em um servidor SEM ele instalar o programa no SERVER. Como posso executar meus programas no meu computador local para outros servidores com apenas acesso de usuário?

    
por 02.10.2013 / 15:02

Tags