호스트를 통해 VirtualBox 게스트에 SSH로 연결하는 방법은 무엇입니까? [닫은]


643

내 Windows 7 컴퓨터에서 Ubuntu VM을 실행하고 있습니다. SSH를 통해 외부에서 웹 서버에 액세스 할 수 있도록 어떻게 설정합니까?

호스트에서 게스트 로 ssh 할 수있는 단계 ( VirtualBox 호스트와 게스트 VM 간의 SSH 액세스 설정)를 찾았 지만 여전히 라우터를 통해 호스트에 액세스하는 데 문제가 있습니다.

Windows 컴퓨터에 SSH 서버를 설치 한 다음 몇 번 터널링 할 수 있다고 가정합니다 (로컬, 동적 등의 측면에서 무엇을 사용 해야하는지 또는 여러 터널을 설정하는 방법은 100 % 확실하지는 않지만), 하지만 내 라우터에서 VM에 직접 액세스 할 수 있도록 직접 포트 전달할 수있는 방법이 있습니까?


3
Vagrant (구성 파일 또는 GUI에서 즉시 액세스 가능한 VM (ssh-accessable, ip-accessable)를 작성 함)를 사용하여이를 수행하는 훨씬 쉬운 방법이 있습니다. 유스 케이스를 모르지만 Vagrant를 사용하여 ssh 액세스 가능 Ubuntu 서버 VM을 작성하는 방법 에 대한 큰 자습서 를 작성 했으며 LAMP 기반 개발 시스템을 설정하려고 할 때 유용합니다.
Sliq

1
Vagrant는 훌륭한 도구이지만 최신 버전의 virtualbox와 호환되지 않습니다
LizH

2
가장 좋은 대답은 다음과 같습니다. stackoverflow.com/a/10410527/2214806
Michael

이 튜토리얼을 확인할 수 있습니다. wiki.workassis.com/virtualbox-ssh-between-host-and-guest
Bikesh M

생각하는 것은 어디에 가상화에 대해 얘기하는 새로운보고 특정 장소를 위해 유용 할 수 area51.meta.stackexchange.com/questions/28201/...
realtebo

답변:


1307

게스트 Linux VirtualBox VM에 로그인하는 가장 좋은 방법은 포트 전달 입니다. 기본적으로 NAT를 사용하는 하나의 인터페이스가 있어야합니다 . 그런 다음 네트워크 설정으로 이동 하여 포트 전달 버튼을 클릭하십시오 . 새 규칙을 추가하십시오 . 규칙 이름으로 "ssh"를 삽입하십시오. "호스트 포트"로 3022를 삽입하십시오. "게스트 포트"로 22를 삽입하십시오. 다른 모든 규칙은 비워 둘 수 있습니다.

또는 명령 줄에서

VBoxManage modifyvm myserver --natpf1 "ssh,tcp,,3022,,22"

여기서 'myserver'는 생성 된 VM의 이름입니다. 추가 된 규칙을 확인하십시오.

VBoxManage showvminfo myserver | grep 'Rule'

그게 다야! VM에 SSH 서버 를 설치하는 것을 잊지 마십시오 .

sudo apt-get install openssh-server

게스트 VM으로 SSH하려면 다음과 같이 작성하십시오.

ssh -p 3022 user@127.0.0.1

userVM 내 사용자 이름은 어디에 있습니까 ?


24
@Keyslinger, 이것이 당신이 찾고 있었던 것입니까? ssh -p 3022 user@127.0.0.1 그것은 내가 빠졌고 다른 사이트에서 찾은 한 단계였습니다.
D. 우즈

10
또한 2020에서 80으로 포트 리디렉션을 추가하여 192.0.0.1:2020을 사용하여 브라우저에서 Apache에 쉽게 액세스 할 수 있습니다 . VBoxManage modifyvm myserver --natpf1 "ssh, tcp ,, 2020,, 80"
Eduardo Russo

4
thebigdog 직접 헤드리스 할 수 있습니다 VBoxHeadless -s 'vmname'
vkostromin

4
기본 22가 아닌 포트 3022를 사용하는 이유는 무엇입니까?
Seraphim

3
인생을 더 편하게하려면 ~ / .ssh / config를 열고 Host mybox HostName 127.0.0.1 User myuser Port 3022해당 파일에 다음 을 추가하고 (들여 쓰기 추가) ssh mybox매번 필요합니다 :)
vancexu

129

VirtualBox의 어댑터 유형을 브리지로 변경하고 게스트가 DHCP 를 사용하도록 설정하거나 DHCP 경계 외부 에서 고정 IP 주소를 설정하십시오 . 그러면 가상 머신이 홈 네트워크에서 일반 게스트처럼 작동합니다. 그런 다음 포트 포워드 할 수 있습니다.


2
2 어댑터 구성의 작동 방식에 대한 아이디어가 있습니까? 하나는 NAT에 있고 다른 하나는 호스트에만 있습니까?
CantGetANick

16
내 생각에 로컬 네트워크의 VM을 노출하는 것이 최선의 옵션이 아닙니다 (예 : 사무실 네트워크). @ vkostromin이 제안한 솔루션은 호스트 내에서 VM의 캡슐화를 유지합니다.
Victor P.

1
@VictorP. 왜 사무실 네트워크에서 이것이 최선의 선택이 아닌지 설명해 주시겠습니까? 보안 때문입니까?
mdo123

1
이것이 최선의 선택이 아니라는 것을 알더라도 현재 구성에서 어댑터를 브리지로 설정하는 것이 유일한 해결책입니다.
James

68

NAT 어댑터를 유지하고 두 번째 호스트 전용 어댑터를 추가하면 놀라운 효과가 있으며 랩톱 (외부 네트워크가 항상 변경되는)에 중요합니다.

http://muffinresearch.co.uk/archives/2010/02/08/howto-ssh-into-virtualbox-3-linux-guests/

가상 상자 자체 (GUI-> 설정-> 네트워크)에서 호스트 전용 네트워크를 만들어야합니다. 그렇지 않으면 게스트에서 호스트 전용 인터페이스를 만들 수 없습니다.


2
이 답변 만 나를 위해 일했지만 다른 것은 없었습니다. 또한 방금 추가 어댑터를 추가했으며 작동했지만 /etc/network/interfaces, 감사 할 필요가 없습니다 .
brokenfoot

3
이것이 최선의 대답이라고 동의했습니다. 그렇지 않으면, 농구를 통해있는 거 점프는 공통 서비스 (액세스 할 때마다 ssh, sftp당신은 표준이 아닌 포트를 통해 이동해야 할 것 때문에, 등).
Kirk Woll


1
이 접속 설정에 대한 또 다른 좋은 소스 2buntu.com/articles/1513/...을
mdo123

1
@Sparkler가 sshd를 실행 중입니까? 방화벽 닫기 포트가 있습니까?
orip

23

Solaris 10 및 Ubuntu 16.04에 대해 호스트 전용 네트워크를 수행하는 방법 ( 브릿지보다 나은 방법 )

호스트 전용 인터페이스 추가

  1. Virtualbox> 파일> 환경 설정> 네트워크> 호스트 전용 네트워크> 추가
  2. VM을 종료합니다.
  3. VM의 설정> 네트워크. 첫 번째 어댑터는 Nat이고 두 번째는 호스트 전용이어야합니다.
  4. cmd.exe를 시작하고를 실행하십시오 ipconfig /all. 당신은 라인을 볼 수 있습니다 :

    Ethernet adapter VirtualBox Host-Only Network:
       ...
       IPv4 Address. . . . . . . . . . . : 192.168.59.1
    

    게스트의 두 번째 어댑터도 192.168.59. *에 있어야합니다.

  5. VM을 시작하십시오.

솔라리스 10

  1. 설정을 확인하십시오 ifconfig -a. e1000g0 및 e1000g1이 표시되어야합니다. 우리는 e1000g1에 관심이 있습니다.
  2. ifconfig e1000g down
  3. ifconfig e1000g 192.168.56.10 netmask 255.255.255.0 up
  4. 이 인터페이스에 도달 할 수 있는지 호스트에서 확인하십시오. ping 192.168.56.10

재부팅시 해당 설정 유지

# vi /etc/hostname.e1000g1
192.168.56.10 netmask 255.255.255.0
# reboot

루트로 로그인하도록 ssh 서비스 ( 관리 ) 구성 (권장되지 않음)

ssh가 활성화되어 있는지 확인

# svcs -a | grep ssh
online         15:29:57 svc:/network/ssh:default

/ etc / ssh / sshd_config를 수정하여

PermitRootLogin yes

SSH 서비스를 다시 시작하십시오.

svcadm restart ssh

호스트에서 확인

ssh root@192.168.56.10

우분투 16.04

인터페이스 목록 :

ip addr

lo, enp0s3, enp0s8과 같은 세 가지 인터페이스가 표시되어야합니다. 우리는 세 번째를 사용할 것입니다.

/ etc / network / interfaces 편집

auto enp0s8
iface enp0s8 inet static
    address 192.168.56.10
    netmask 255.255.255.0

그런 다음 sudo ifup enp0s8. enp0s8에 올바른 주소가 있는지 확인하십시오. 당신은 당신의 IP를 볼 수 있습니다 :

 $ ip addr show enp0s8
 ...
    inet 192.168.56.10/24 brd 192.168.56.255 scope global secondary enp0s8

그렇지 않으면, 당신은 실행할 수 있습니다 sudo ifdown enp0s8 && sudo ifup enp0s8

/superuser/424083/virtualbox-host-ssh-to-guest/424115#424115


3
호스트 전용 네트워크가 켜져 192.168.59.1있고 192.168.56.10고정 게스트 IP 를 지정하면 작동하지 않습니다 . 클래스 C 서브넷 주소 전체가 정확히 일치해야하므로 192.168.59.10게스트 내부 와 같은 것을 사용해야 합니다.
Quolonel 질문

22

네트워크 설정 에서 브리지 네트워크 (또는 최신 버전의 "브리지 어댑터")를 사용할 수도 있습니다 . 그러면 머신과 함께 VM이 VM에 배치됩니다. 따라서 이와 같이 VM으로 ssh 할 수 있습니다.

ssh user @ IP_OF_VM


이 솔루션으로 SSH 연결이 LAN을 통과합니까?
user2233706 2016 년

16

호스트 컴퓨터에서 VirtualBox에서 실행되는 Ubuntu VM으로 ssh하려면 VM에 대해 두 개의 네트워크 어댑터를 설정해야합니다.

우선, 아직 VM을 중지하십시오.

그런 다음 VM을 선택하고 VirtualBox 도구 모음에서 설정 메뉴를 클릭하십시오.

여기에 이미지 설명을 입력하십시오

어댑터 1 설정

여기에 이미지 설명을 입력하십시오

어댑터 2 설정

여기에 이미지 설명을 입력하십시오

(참고 : 포트 포워딩을 설정할 필요가 없습니다.)

그게 다야. 일단 설정되면 VM을 시작할 수 있습니다. VM에서 네트워크 구성은 다음과 같으며 인터넷에도 액세스 할 수 있습니다.

여기에 이미지 설명을 입력하십시오

또한 호스트 시스템에서 VM으로 ssh 할 수 있습니다.

여기에 이미지 설명을 입력하십시오

SSH 서버가 VM에 설치되어 실행 중인지 확인하십시오.

$ ps aux | grep sshd
root 864 0.1 0.5 65512 5392 ? Ss 22:10 0:00 /usr/sbin/sshd -D

그렇지 않은 경우 설치하십시오.

$ sudo apt-get install openssh-server

또한 귀하의 정보를 위해 :

  • 내 VirtualBox 버전 : 5.2.6 r120293 (Qt5.6.2), 2018
  • 내 우분투 버전 : Ubuntu 16.04.3 LTS
  • 내 호스트 컴퓨터 : Windows 10

호스트 전용 어댑터가없는 경우 다음에서 어댑터를 작성할 수 있습니다.File > Host Network Manager > Create
Cirelli94

슬프게도 인터넷 네트워크에 도달하지 못함
Cirelli94 16:20의

5
인터넷에서 가정 / 사무실 VirtualBox 게스트 컴퓨터로 SSH 연결

다른 사용자가 제공 한 답변은 다음과 같습니다. How to SSH to a VirtualBox guest externally through a host?

... 인터넷에서 가정용 컴퓨터의 게스트 컴퓨터로 연결하는 작업을 수행하는 데 도움이되었습니다. 컴퓨터, 태블릿 및 스마트 폰 (android, Iphone 등)을 사용하여 연결할 수 있어야합니다. 다른 사람에게 도움이 될 수 있도록 몇 가지 단계를 더 추가합니다.

내 설정에 대한 간단한 다이어그램은 다음과 같습니다.

  • Remote device ---> INTERNET --> MODEM --> ROUTER --> HOST MACHINE --> GUEST VM

  • Remote device (ssh client) ---> PASS THRU DEVICES ---> GUEST VM (ssh server)

  • Remote device (leave ssh port 3022) ---> INTERNET --> MODEM --> ROUTER (FWD frm:p3022 to:p3022)--> HOST MACHINE (FWD frm:p3022 to:p22) --> GUEST VM (arrive ssh port 22)

나를위한 열쇠는 모든 연결이 PASSING-THROUGH원격 PC에서 집에있는 게스트 가상 머신 으로가는 중개 장치 라는 것을 깨달았습니다 .

참고 : * 보안 연결을 처리하려면 SSH 클라이언트가 필요하고 보안 연결을 처리하려면 실행중인 SSH 서버가 필요합니다.

  • 위에서 선택한 답변에 사용 된대로 포트 3022를 전달하겠습니다.

  • 필요한 곳에 IP를 입력하십시오 (가정용 모뎀 / 라우터, 호스트 IP, 게스트 IP 등). 선택된 이름은 단지 사용 또는 변경입니다.

1. 모뎀의 IP / 라우터 외부 IP 주소에서 포트 3022로 ssh 터널을 만듭니다.

ssh client/device possible commands: ssh -p 3022 user-name@home_external_IP

2. 포트 포워드 = 라우터를 통해 호스트 컴퓨터로 연결을 통과합니다.

  • 또한 라우터의 방화벽 / IPtable 규칙으로 포트를 전달할 수 있어야합니다 (필요한 경우 열림).

  • 라우터의 Pfwd SCREEN 필수 항목 : AppName : SSH_Fwd, Port_from : 3022, Protocol : both (UDP / TCP), IP_address : hostIP_address, Port_to : 3022 (다른 모든 항목은 비워 둘 수 있음)

DD-WRT 라우터 소프트웨어 리소스 / 정보 :

3. 호스트 머신 방화벽 : 열린 포트 3022 # 전달 된 포트는 게스트 머신을 통과 할 수 있습니다

  • 호스트 컴퓨터 : VirtualBox, 게스트 추가 및 게스트 컴퓨터를 아직 설치하지 않은 경우 설치

  • 게스트 컴퓨터를 구성한 다음 아래 네트워크 섹션을 따르십시오.

  • CLI보다 게스트 네트워크를 설정하기 위해 VirtualBox GUI를 사용했습니다.

  • 다른 방법을 사용하려면 다음을 참조하십시오. VirtualBox/manual/ch06.html#natforward

4. 게스트를 위해 Network Bridge 어댑터를 사용하는 것이 좋습니다 = LAN 및 LAN의 다른 시스템에 대한 액세스. 방화벽이 제대로 설정되지 않으면 게스트 컴퓨터가 이제 LAN 컴퓨터와 인터넷 해커에 노출되기 때문에 보안 위험이 높아집니다. 따라서 브리지 된 보안 위험에 대한 노출을 줄이기 위해 NAT에 연결된 네트워크 어댑터를 선택했습니다.

게스트 컴퓨터에서 다음을 수행하십시오.

  • 게스트 시스템 VirtualBox 네트워크 설정 : 어댑터 1 : NAT에 연결
  • 게스트 시스템 VirtualBox 포트 전달 규칙 : 이름 : External_SSH, 프로토콜 : TCP, 호스트 포트 : 3022, 게스트 포트 22, 호스트 및 게스트 IP : 비워 두십시오.
  • 네트워크 섹션에서 사전을 클릭 한 다음 포트 전달을 클릭하여 규칙을 입력하십시오.
  • 게스트 컴퓨터 방화벽 : 열린 포트 22 #ssh 연결을 입력 할 수 있습니다
  • 게스트 시스템 : ssh 서버가 설치되고 올바르게 구성되어 실행 중인지 확인하십시오.
  • ssh 서버가 w / command를 실행 중인지 확인하기위한 Linux 테스트 : sudo service ssh status
  • 게스트 시스템의 포트 22에 연결되어 있는지 netstat를 확인할 수 있습니다.

또한 플랫폼 사용에 따라 다른 ssh 서버와 클라이언트가 있습니다.

  • wikipedia/Secure_Shell
  • wikipedia/Comparison_of_SSH_servers
  • wikipedia/Comparison_of_SSH_clients

우분투 사용자의 경우 :

  • ubuntu community: SSHOpenSSH/Configuring
  • ubuntu/community: OpenSSH/Keys

그게 다야. 내가 실수를하거나 무언가를 추가하고 싶을 때-마음대로 할 수 있다면-나는 여전히 멍청하다.

이것이 누군가를 돕기를 바랍니다. 행운을 빕니다!


5

Windows 호스트의 경우 다음을 수행 할 수 있습니다.

  1. virtualbox manager에서 :
    1. virtualbox manager 에서 ctrl+ G를 선택하십시오 .
    2. 그런 다음 네트워크 패널로 이동
    3. 개인 네트워크 추가
      1. DHCP 활성화가 선택되어 있지 않은지 확인하십시오
  2. 네트워크 관리 (윈도우)
    1. 새로 작성된 virtualbox 호스트 전용 어댑터 및 실제 네트워크 카드를 선택하십시오.
    2. 마우스 오른쪽 버튼을 클릭하고 "브리지 만들기"를 선택하십시오.
  3. 즐겨

4

게스트에서 호스트 또는 다른 서버로 포트 전달을 시작할 수도 있습니다. 게스트가 '잠겨'있거나 ModifyVM 옵션을 완료 할 수없는 경우 (예 : VBoxManage에 대한 권한이없는 경우)에 특히 유용합니다.

세 가지 사소한 요구 사항은 1) VirtualBox Guest에 로그인하거나 ( 'console'GUI, 다른 게스트 등을 통해) 2) VirtualBox HOST (또는 다른 서버)에 계정이 있고 3) SSH 및 TCP입니다. 전달이 차단되지 않습니다.

세 가지 요구 사항을 충족 할 수 있다고 가정하면 다음 단계가 수행됩니다.

  1. 게스트 netstat -rn에서 기본 라우팅 대상 0.0.0.0에 대한 게이트웨이 주소를 실행 하고 찾으십시오. "10.0.2.2"라고 가정 해 봅시다. 이 '게이트웨이'주소는 VirtualBox 호스트 가상 IP 중 하나입니다.
  2. 게스트 ssh -R 2222:localhost:22 10.0.2.2에서 "10.0.2.2"가 VirtualBox 서버의 IP 주소이거나 포트 포워드하려는 다른 서버 IP 인 곳 에서 실행 하십시오.
  3. 호스트 ssh 10.0.2.2 -p2222에서 10.0.2.2는 1 단계에서 찾은 기본 게이트웨이 / VBHost 가상 IP입니다. 포트 전달하려는 VirtualBox 호스트가 아닌 경우 명령은 다음과 같습니다.ssh localhost -p2222

4

아래 단계에 따라 퍼티 ​​(포트 전달없이)를 사용하여 호스트 시스템에서 가상 상자에서 실행중인 우분투 VM에 로그인하십시오.

  1. Virtualbox manager에서 vm을 선택하고 settings 아이콘을 클릭하십시오. 그런 다음 네트워크로 이동하여 다음과 같이 두 개의 어댑터를 활성화하십시오.

    • 어댑터 1 (인터넷 액세스의 경우) :-> NAT, 고급-> 연결된 케이블에 연결되어 있는지 확인하십시오.
    • 어댑터 2 : 연결-> 호스트 전용 어댑터, 고급-> 연결된 케이블 및 무차별 모드 확인-> 모두 허용.
  2. 우분투 vm을 시작하십시오.

  3. 루트로 VM에 로그인하십시오.
  4. 아래와 같이 '/ etc / network / interfaces'파일을 편집하여 저장하십시오 :

    auto lo
    iface lo inet loopback
    
    auto eth0
    iface eth0 inet dhcp
    
    auto eth1
    iface eth1 inet dhcp
    
  5. VM을 다시 시작하십시오.

  6. VM에 로그인하고 아래 명령을 실행하여 eth1에 할당 된 IP를 확인하십시오.

    ifconfig
    
  7. 이 IP를 사용하여 VM의 퍼티 세션을 엽니 다.



2

우분투 18.04 LTS

서버 IP를 확인하고 "포트 전달"없이 연결하기 위해 브리지로 구성

VirtualBox> 서버> 설정> 네트워크> 어댑터 2 활성화> "브리지"선택> 무차별 모드 선택 : 모두 허용> 연결된 케이블 확인> 서버 시작

우분투 서버에서 sudo nano /etc/netplan/*init.yaml파일을 편집 하십시오.

내 샘플 파일 :

network:
    ethernets:
        enp0s3:
            addresses: []
            dhcp4: true
        enp0s8:
            addresses: [192.168.0.200/24]
            dhcp4: no
            dhcp6: no
            nameservers:
               addresses: [8.8.8.8, 8.8.4.4]
    version: 2

당신을 도울 명령

nano /etc/netplan/file.yaml     # file to specify the rules of network
reboot now                      # restart ubuntu server right now
netplan apply                   # do after edited *.yaml, to apply changes
ifconfig -a                     # show interfaces with ip, netmask, broadcast, etc...
ping google.com                 # to see if there is internet

NetPlan을 사용하여 Ubuntu 18.04 LTS 서버에서 고정 IP 주소 구성


0

네트워크 설정을 브리지로 설정하는 것만으로도 속임수가되었습니다.

이렇게하면 IP가 변경됩니다. 그러나 제 경우에는 즉시 바뀌지 않았습니다. ifconfig같은 IP를 반환했습니다. vm 및 boom을 재부팅하고 ip가 192. *로 시작되도록 설정했으며 즉시 ssh 액세스가 허용되었습니다.


내가 추측하고있는이 정보는 일반적인 의미에서 부분적으로 또는 심지어 완전히 부정확합니다. downvoter는 말을 귀찮게하지 않았다.
boulder_ruby

"일부에서는 작동하지 않습니다."
boulder_ruby

0

보안 네트워크에서 네트워크를 브리지로 설정하면 작동하지 않을 수 있습니다. 관리자는 포트 당 하나의 mac 주소 만 허용하거나 스위치가 하나의 포트에서 여러 mac을 감지하면 포트를 더 나쁘게 차단할 수 있습니다.

내 생각에 가장 좋은 해결책은 컴퓨터에서 실행하려는 추가 서비스를 처리하기 위해 추가 네트워크 인터페이스를 설정하는 것입니다. 따라서 랩톱을 집에 가져갈 때 브리징을 허용하고 네트워크에 연결된 다른 장치와 SSH로 연결할 수있는 브리지 인터페이스가 있으며 연결시 랩톱에서 VM으로 SSH로 연결하려는 경우 호스트 전용 어댑터 캠퍼스의 eduroam wifi 네트워크에 연결합니다.


0

NAT 네트워크 어댑터와 포트 추가를 사용하십시오. 실제 호스트 ip를 언급하십시오. 127.0.0.1 또는 localhost를 사용하지 마십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.