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

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

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

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

답변1

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

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

파일 시스템을 마운트하려면 수퍼유저 권한이 필요하거나 최소한 그 중 일부를 부여해야 합니다(예: suid 실행 파일을 통해 fusermount). 서버 관리자는 이 권한이 남용되어 추가 권한을 얻을 수 있을 만큼 강력하기 때문에 신뢰할 수 있는 사용자에게만 이 권한을 부여합니다.

파일 시스템을 마운트할 수 없는 경우 다른 옵션은 qemu. 프로그램이 액세스해야 하는 서버의 어떤 리소스는 무엇입니까? 이러한 리소스를 주조 기계에 노출하고 그곳에서 소프트웨어를 실행할 수 없습니까? 프로그램이 서버의 가상 머신에서 실행되는 경우에도 비슷한 작업을 수행해야 합니다.

Mint 머신의 복사본으로 서버에서 qemu VM을 시작하려면 Mint 머신에서 LVM을 사용하고 거기에 단 하나의 파일 시스템(루트 파일 시스템)만 있다고 가정하고 /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 컴퓨터에 있는 프로그램이 서버에서 실행되기를 원합니다. 사용자 액세스만으로 로컬 컴퓨터에서 다른 서버로 프로그램을 실행하려면 어떻게 해야 합니까?

관련 정보