Como SSH para um convidado do VirtualBox externamente através de um host? [fechadas]


644

Eu tenho uma VM do Ubuntu em execução na minha máquina Windows 7. Como faço para configurá-lo para que eu possa acessar o servidor da web externamente através do SSH?

Encontrei as etapas ( Configurar acesso SSH entre o VirtualBox Host e as VMs convidadas ) para poder enviar ssh para meu convidado do meu host, mas isso ainda me deixa com o problema de acessá-lo através do meu roteador.

Suponho que eu poderia instalar um servidor SSH na minha máquina Windows e depois fazer o túnel algumas vezes (embora não tenha 100% de certeza do que usar em termos de local, dinâmico etc. ou como configurar vários túneis?), mas existe uma maneira de tornar a VM diretamente acessível ao meu roteador para que eu possa transportar diretamente para ela?


3
Há uma maneira muito mais fácil de fazer isso, usando o Vagrant (que cria VMs prontas para uso (acessíveis por ssh, acessíveis por ip) a partir de um arquivo de configuração ou GUI). Não conheço seu caso de uso, mas escrevi um grande tutorial sobre como criar uma VM do servidor Ubuntu acessível por ssh com o Vagrant , útil quando você deseja configurar uma máquina de desenvolvimento baseada em LAMP.
Sliq 15/09/13

1
Vagrant é uma ótima ferramenta, mas não é compatível com as versões mais recentes do VirtualBox
LizH

2
Melhor resposta é ainda mais baixo: stackoverflow.com/a/10410527/2214806
Michael


É pensar que poderia ser útil ter um novo, especifi, lugar onde a falar sobre virtualização area51.meta.stackexchange.com/questions/28201/...
realtebo

Respostas:


1308

A melhor maneira de efetuar login em uma VM VirtualBox Linux convidada é o encaminhamento de porta . Por padrão, você já deve ter uma interface que esteja usando NAT . Em seguida, vá para as configurações de rede e clique no botão Encaminhamento de porta . Adicione uma nova regra . Como o nome da regra, insira "ssh". Como "Porta do host", insira 3022. Como "Porta do convidado", insira 22. Todo o restante da regra pode ser deixado em branco.

ou na linha de comando

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

onde 'myserver' é o nome da VM criada. Verifique as regras adicionadas:

VBoxManage showvminfo myserver | grep 'Rule'

Isso é tudo! Certifique-se de não esquecer de instalar um servidor SSH na VM:

sudo apt-get install openssh-server

Para fazer o SSH na VM convidada, escreva:

ssh -p 3022 user@127.0.0.1

Onde userestá o seu nome de usuário na VM.


24
@Keyslinger, é isso que você estava procurando? ssh -p 3022 user@127.0.0.1 Essa foi a única etapa que eu estava perdendo e só fui encontrar em outro site.
D. Woods

10
Também adicionei o redirecionamento de porta de 2020 para 80, para que eu possa acessar facilmente o Apache a partir do navegador usando 192.0.0.1:2020 . VBoxManage modifyvm myserver --natpf1 "ssh, tcp ,, 2020, 80"
Eduardo Russo

4
thebigdog, você pode sem cabeça diretamente: VBoxHeadless -s 'vmname'
vkostromin

4
Por que estamos usando a porta 3022 e não o padrão 22?
Seraphim

3
Para tornar a vida mais fácil, aberto ~ / .ssh / config, adicione o seguinte Host mybox HostName 127.0.0.1 User myuser Port 3022para o arquivo (add travessão si mesmo), então você só precisa ssh myboxcada vez :)
vancexu

129

Altere o tipo de adaptador no VirtualBox para ponte e defina o convidado para usar o DHCP ou defina um endereço IP estático fora dos limites do DHCP. Isso fará com que a máquina virtual aja como um convidado normal em sua rede doméstica. Você pode então avançar.


2
Alguma idéia de como a configuração de 2 adaptadores funcionará? Um no NAT e outro no Host Only?
CantGetANick

16
Na minha opinião, expor a VM na rede local não é a melhor opção (por exemplo, em uma rede de escritório), a solução proposta por @vkostromin mantém o encapsulamento da VM dentro do host.
Victor P.

1
@VictorP. você pode explicar por que não é a melhor opção em uma rede de escritórios? É devido à segurança ou?
Md123

1
Mesmo sabendo que essa não é a melhor opção, na minha configuração atual, defina o adaptador como ponte, a única solução que funciona.
James

69

Manter o adaptador NAT e adicionar um segundo adaptador somente para host funciona de maneira surpreendente e é crucial para laptops (onde a rede externa sempre muda).

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

Lembre-se de criar uma rede somente host na própria caixa virtual (GUI -> configurações -> rede); caso contrário, você não poderá criar a interface somente host no convidado.


2
Apenas essa resposta funcionou para mim, nada mais funcionou. Além disso, acabei de adicionar um adaptador adicional e ele funcionou, não precisava editar o /etc/network/interfaces, Obrigado!
brokenfoot

3
Concordou que esta é a melhor resposta. Caso contrário, você está pulando através de aros cada vez que você quiser acessar um serviço comum ( ssh, sftp, etc.) desde que você teria que passar por uma porta não-padrão.
Kirk Woll


1
outra boa fonte sobre como configurar isso 2buntu.com/articles/1513/…
mdo123 16/17

1
@Sparkler está executando o sshd? Existe um firewall fechando portas?
orip 21/02

24

Você também pode usar uma rede em ponte (ou "Bridge Adapter", em versões mais recentes) nas configurações de rede . Isso colocará sua VM em uma VLAN com sua máquina. Então você pode simplesmente fazer o ssh na VM assim.

usuário ssh @ IP_OF_VM


Com esta solução, a conexão SSH atravessa a LAN?
user2233706

23

Como fazer uma rede somente host ( melhor que a ponte) para Solaris 10 e Ubuntu 16.04

Adicionar interface somente host

  1. Caixa virtual> Arquivo> Preferências> Rede> Redes somente host> Adicionar
  2. Desligamento vm.
  3. Configurações da VM> Rede. O primeiro adaptador deve ser Nat, o segundo somente host.
  4. Inicie o cmd.exe e execute ipconfig /all. Você deve ver as linhas:

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

    O segundo adaptador no convidado também deve estar em 192.168.59. *.

  5. Inicie a VM.

Solaris 10

  1. Verifique as configurações ifconfig -a . Você deve ver e1000g0 e e1000g1. Estamos interessados ​​no e1000g1.
  2. ifconfig e1000g down
  3. ifconfig e1000g 192.168.56.10 netmask 255.255.255.0 up
  4. Verifique no host se esta interface é acessível: ping 192.168.56.10

Preserve essas configurações ao reiniciar

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

Configure o serviço ssh ( administração ) para efetuar login como root (não recomendado)

Verifique se o ssh está ativado

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

Modifique / etc / ssh / sshd_config para que haja

PermitRootLogin yes

Reinicie o serviço ssh

svcadm restart ssh

Do host, verifique

ssh root@192.168.56.10

Ubuntu 16.04

Interfaces de lista:

ip addr

Você deve ver três interfaces como lo, enp0s3, enp0s8. Nós vamos usar o terceiro.

Edite / etc / network / interfaces

auto enp0s8
iface enp0s8 inet static
    address 192.168.56.10
    netmask 255.255.255.0

Então sudo ifup enp0s8. Verifique se enp0s8 obteve o endereço correto. Você deve ver seu ip:

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

Caso contrário, você pode executar sudo ifdown enp0s8 && sudo ifup enp0s8

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


3
Isso não funciona se a sua rede somente host estiver ativada 192.168.59.1e você especificar 192.168.56.10o IP estático do convidado. Todo o endereço de sub-rede da classe C deve corresponder exatamente, portanto, você deve usar algo como 192.168.59.10dentro do convidado.
Perguntas Quolonel

16

Para fazer o ssh para uma VM do Ubuntu em execução no VirtualBox a partir da sua máquina host, você precisa configurar dois adaptadores de rede para a VM.

Primeiro de tudo, pare a VM, se ainda não estiver.

Em seguida, selecione a VM e clique no menu Configurações na barra de ferramentas do VirtualBox:

insira a descrição da imagem aqui

Configurar o adaptador 1

insira a descrição da imagem aqui

Configurar o adaptador 2

insira a descrição da imagem aqui

(Nota: você não precisa configurar nenhum encaminhamento de porta.)

É isso aí. Depois de configurado, você pode iniciar sua VM. Na sua VM, a configuração de rede será semelhante abaixo e você também terá acesso à Internet:

insira a descrição da imagem aqui

Também na sua máquina host, você pode ssh na sua VM:

insira a descrição da imagem aqui

Verifique se o servidor SSH foi instalado e em execução na VM.

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

Caso contrário, instale-o:

$ sudo apt-get install openssh-server

Também para sua informação:

  • Versão do My VirtualBox: 5.2.6 r120293 (Qt5.6.2), 2018
  • Minha versão do Ubuntu: Ubuntu 16.04.3 LTS
  • Minha máquina host: Windows 10

Se você não possui nenhum adaptador somente para host, pode criar um a partir de:File > Host Network Manager > Create
Cirelli94

Infelizmente, ele não alcança a rede de Internet.
Cirelli94 20/03

5
SSH Voltar para a sua máquina residencial / escritório virtualBox da Internet

As respostas fornecidas por outros usuários aqui: How to SSH to a VirtualBox guest externally through a host?

... me ajudou a realizar a tarefa de conectar-me da Internet à máquina do meu computador doméstico. Você deve conseguir se conectar usando computadores, tablets e smartphones (android, IPhone etc.). Eu adiciono mais algumas etapas, caso isso possa ser útil para outra pessoa:

Aqui está um diagrama rápido da minha configuração:

  • 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)

A chave para mim foi perceber que TODAS as conexões eram PASSING-THROUGHdispositivos intermediários para ir do meu PC remoto à minha máquina virtual convidada em casa - daí o encaminhamento de porta!

Notas: * É necessário que o cliente ssh solicite uma conexão segura e um servidor ssh em execução para processar a conexão segura.

  • Encaminharei a porta 3022 conforme usada na resposta escolhida acima.

  • Digite seus IPs onde necessário (modem / roteador doméstico, IP do host, IP do convidado, etc.). Os nomes escolhidos são apenas exemplos - use ou altere.

1.Crie um túnel ssh para a porta 3022 no endereço IP externo do IP / roteador do seu modem.

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

2.Port forward = estamos passando a conexão do roteador para a máquina host

  • Verifique também se as regras de firewall / tabela de IP no roteador estão permitindo que as portas sejam encaminhadas (abra se necessário)

  • Entradas necessárias da tela Pfwd do roteador: AppName: SSH_Fwd, Porta_de: 3022, Protocolo: ambos (UDP / TCP), Endereço_IP: endereço_IP: endereço_IP, Porta_to: 3022, todo o resto pode ficar em branco

Recursos do software do roteador DD-WRT / Informações:

3.Host Machine Firewall: porta aberta 3022 #so a porta encaminhada pode passar através da máquina do convidado

  • Máquina Host: Instale o VirtualBox, adições de convidados e máquina de convidados, se ainda não o tiver feito.

  • Configure a máquina convidada e siga a seção Rede abaixo

  • Usei a GUI do VirtualBox para configurar a rede dos convidados - mais fácil que a CLI

  • Se você deseja usar outros métodos, consulte: VirtualBox/manual/ch06.html#natforward

4.Alguns sugerem o uso do adaptador de ponte de rede para convidado = acesso à LAN e outras máquinas na sua LAN. Isso também representa um risco maior de segurança, porque agora sua máquina convidada agora está exposta a máquinas LAN e possivelmente aos hackers da INTERNET, se o firewall não estiver configurado corretamente. Por isso, selecionei o adaptador de rede conectado ao NAT para obter menos exposição a riscos de segurança em ponte.

Na máquina convidada, faça o seguinte:

  • Configurações de rede do VirtualBox da máquina convidada: Adaptador 1: Anexado ao NAT
  • Regra de encaminhamento de porta do VirtualBox da máquina convidada: Nome: External_SSH, Protocolo: TCP, Porta do host: 3022, Porta do convidado 22, IP do host e convidado: deixe em branco
  • clique com antecedência na seção Rede e clique em Encaminhamento de porta para inserir regras
  • Firewall da máquina convidada: porta aberta 22 #so a conexão ssh pode entrar
  • Máquina Convidada: Verifique se o servidor ssh está instalado, configurado corretamente e executando
  • Teste LINUX para ver se o servidor ssh está executando com o comando: sudo service ssh status
  • Pode verificar o netstat para ver se a conexão foi feita na porta 22 na máquina convidada

Também existem servidores e clientes ssh diferentes, dependendo do uso da plataforma.

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

Para usuários do Ubuntu:

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

Deve ser isso. Se eu cometi um erro ou quiser adicionar algo, sinta-se à vontade para fazer isso, ainda sou um noob.

Espero que isso ajude alguém. Boa sorte!


5

Para host do Windows, você pode:

  1. No gerenciador de caixas virtuais:
    1. selecione ctrl+ Gno seu gerenciador de caixas virtuais,
    2. depois vá para o painel de rede
    3. adicionar uma rede privada
      1. certifique-se de que ativar DHCP não está selecionado
  2. No gerenciamento de rede (windows)
    1. Selecione o adaptador recém-criado host virtualbox e a placa de rede física
    2. Clique com o botão direito e selecione "Criar ponte"
  3. Aproveitar

4

Você também pode iniciar uma porta para o seu host, ou qualquer outro servidor, a partir do seu convidado. Isso é especialmente útil se o seu convidado estiver 'bloqueado' ou não puder concluir a opção ModifyVM (por exemplo, nenhuma permissão para o VBoxManage).

Três requisitos menores são: 1) você é / pode fazer login no VirtualBox Guest (via GUI do 'console', outro convidado, etc.), 2) você possui uma conta no VirtualBox HOST (ou outro servidor) e 3) SSH e TCP o encaminhamento não está bloqueado.

Presumindo que você possa atender aos 3 requisitos, estas são as etapas:

  1. No Convidado, execute netstat -rne encontre o endereço do Gateway no destino de rota padrão 0.0.0.0. Digamos que seja "10.0.2.2". O endereço deste 'Gateway' é (um) dos IPs virtuais do VirtualBox Host.
  2. No Convidado, execute ssh -R 2222:localhost:22 10.0.2.2onde "10.0.2.2" é o endereço IP do servidor VirtualBox - OU - qualquer outro IP do servidor para o qual você deseja enviar.
  3. No Host, execute ssh 10.0.2.2 -p2222onde 10.0.2.2 é o IP virtual do gateway / VBHost padrão encontrado na etapa 1. Se NÃO for o host do VirtualBox para o qual você está encaminhando a porta, o comando serássh localhost -p2222

4

Siga as etapas abaixo para fazer login na sua VM do ubuntu em execução na caixa virtual da máquina host usando o putty (sem encaminhamento de porta):

  1. No gerenciador do Virtualbox, selecione a vm, clique no ícone de configurações. Em seguida, vá em Redes e ative dois adaptadores, como abaixo:

    • Adaptador 1 (Para acesso à Internet): Conectado a -> NAT, Avançado -> Verifique o cabo conectado.
    • Adaptador 2: Conectado a -> Adaptador somente host, Avançado -> Verifique o cabo conectado e modo promíscuo -> Permitir tudo.
  2. Inicie o ubuntu vm.

  3. Efetue login na VM como raiz.
  4. Edite o arquivo '/ etc / network / interfaces' como abaixo e salve-o:

    auto lo
    iface lo inet loopback
    
    auto eth0
    iface eth0 inet dhcp
    
    auto eth1
    iface eth1 inet dhcp
    
  5. Reinicie a VM.

  6. Entre à VM e execute o comando abaixo para verificar o IP alocado para eth1:

    ifconfig
    
  7. Use este IP para abrir a sessão de massa para a VM.



2

Ubuntu 18.04 LTS

Configuração com ponte para ver o ip do servidor e conectar-se sem "encaminhamento de porta"

VirtualBox> clique com o botão direito do mouse em servidor> configurações> Rede> habilite o adaptador 2> selecione "em ponte"> Modo promíscuo: permita tudo> Verifique o cabo conectado> inicie o servidor

No servidor ubuntu, edite o sudo nano /etc/netplan/*init.yamlarquivo,

Meu arquivo de amostra:

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

Comandos que ajudarão você

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

Configurar endereços IP estáticos no servidor Ubuntu 18.04 LTS - com NetPlan


1

Simplesmente definir a configuração de rede como ponte fez o truque para mim.

Seu IP mudará quando você fizer isso. No entanto, no meu caso, não mudou imediatamente. ifconfigretornou o mesmo ip. Reiniciei o vm e o boom, o ip se iniciou com 192. * e me foi permitido o acesso ssh imediatamente.


Acho que essas informações são parcial ou totalmente imprecisas em algum sentido geral, não faço ideia. downvoter não se incomodou em dizer.
boulder_ruby

A saber, "para alguns, isso não funciona".
boulder_ruby

0

Em redes seguras, configurar sua rede para ponte pode não funcionar. Os administradores podem permitir apenas um endereço MAC por porta ou, pior ainda, bloquear a porta, caso os switches detectem vários macs em uma porta.

A melhor solução, na minha opinião, é configurar interfaces de rede adicionais para lidar com serviços adicionais que você gostaria de executar em suas máquinas. Portanto, eu tenho uma interface de ponte para permitir a ponte quando levo meu laptop para casa e posso fazer o SSH a partir de outros dispositivos na minha rede, além de um adaptador somente para host quando eu gostaria de fazer o SSH na minha VM do meu laptop quando estou conectado à rede wifi eduroam no campus.


0

Use o adaptador de rede NAT e adicione a porta à frente. Mencione o host real ip.Não use 127.0.0.1 ou localhost.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.