내 컴퓨터에 있는 프로그램을 서버에서 실행

내 컴퓨터에 있는 프로그램을 서버에서 실행

SSH로 연결할 수 있는 서버가 있지만 그 서버의 HDD 공간을 많이 사용할 수 없습니다. 프로그램을 실행하고 싶은데 이 프로그램의 용량이 꽤 커서 그냥 서버에 복사할 수가 없습니다. 내 컴퓨터에 있는 프로그램을 SSH를 통해 서버에서 실행할 수 있는 방법이 있나요?

(내 컴퓨터와 서버가 모두 동일한 LAN에 있고 Linux Mint를 실행하고 있으며 서버는 CentOS 릴리스 5.9(최종)를 실행하고 있습니다.)

답변1

서버가 프로세스 중 하나에서 ELF 바이너리(예: Python 인터프리터)를 실행하려면 메모리에서 이를 mmap할 수 있어야 합니다. 파일이 가상 파일 시스템에 있고 이를 제공하는 파일 시스템이 이를 지원하는 경우에만 그렇게 할 수 있습니다.

python따라서 해당 실행 파일(및 해당 종속성)을 쓰기 액세스 권한이 있는 마운트된 파일 시스템 중 하나의 서버에 복사하거나 sshfs와 같은 일종의 네트워크 파일 시스템을 통해 서버에 민트 머신의 파일 시스템을 마운트 해야 합니다 . nfs 또는 cifs.

파일 시스템을 마운트하려면 슈퍼유저 권한이 필요하거나 최소한 해당 권한 중 일부를 부여받아야 합니다( 와 같은 suid 실행 파일을 통해 fusermount). 해당 서버의 관리자는 남용될 수 있을 만큼 강력하고 추가 권한을 얻을 수 있으므로 신뢰할 수 있는 사용자에게만 해당 권한을 부여합니다.

파일 시스템을 마운트할 수 없는 경우 다른 옵션은 qemu. 내가 가장 먼저 묻고 싶은 질문은: 왜 서버에서 그것을 실행해야 합니까? 해당 프로그램이 서버의 어떤 리소스에 액세스해야 합니까? 해당 리소스를 민트 머신에 노출하고 대신 그곳에서 소프트웨어를 실행할 수 없습니까? 프로그램이 서버의 VM에서 실행되는 경우에도 이와 같은 작업을 수행해야 합니다.

민트 머신에서 LVM을 사용하고 거기에 파일 시스템(루트 파일 시스템)이 하나만 있다고 가정하고 민트 머신의 복사본으로 서버에서 qemu VM을 시작하려면 다음을 /dev/mint_VG/root수행할 수 있습니다.

  • /dev/mint_VG/root서버에 있는 VM의 루트 파일 시스템이 될 LVM 스냅샷을 만듭니다 .

    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
    

(여기에서는 가상 CPU 8개와 4GB 또는 RAM을 사용하여 실행 중이며 처음에는 bashVM에서 실행됩니다.)

VNC 뷰어로 그래픽 콘솔을 구입 server-machine:4하거나 그래픽이 필요하지 않은 경우 대신 직렬 콘솔을 사용할 수 있습니다.

서버의 시스템 관리자를 설득하여 kvm에 대한 쓰기 액세스 권한을 부여 하면 /dev/kvm훨씬 더 효율적이게 됩니다.

답변2

내가 아는 한 루트 액세스 없이는 할 수 없습니다 :(

추론: 보안: 서버에서 로컬로 실행되는 프로그램이나 컴퓨터에 있는 소프트웨어를 실행하는 다른 컴퓨터와 서버의 차이점은 무엇입니까?

이것이 가능하다면 그것은 봇넷이 될 것입니다.

나는 반대표를 받았기 때문에: (이런 일이 얼마나 빨리 일어나는지 매우 실망스럽습니다.) 그는 서버에 프로그램을 설치하지 않고 LinuxMint 컴퓨터의 프로그램이 서버에서 실행되기를 원합니다. 사용자 액세스만 사용하여 로컬 컴퓨터에서 다른 서버로 프로그램을 실행하려면 어떻게 해야 합니까?

관련 정보