Como posso configurá-lo para poder fazer o SSH na minha VM convidada do VMWare?


16

Por alguma razão, a documentação desse processo na Internet está bastante ausente ou desatualizada. Basicamente, tenho uma máquina virtual VMWare convidada no VMWare Fusion (executando o Ubuntu 10.10) e tenho o Mac OSX 10.6 como host. Quero poder fazer o SSH do Mac para a VM do Linux. Como posso configurar as coisas para que isso seja possível?


Relacionado: superuser.com/questions/729712/… Pelo menos no Windows, você pode simplesmente enviar ssh para um IP configurado automaticamente pelo VMWare.
21918 Ben Ben

Respostas:


13

absolutamente - é apenas uma questão de usar uma interface somente local ou em ponte e trabalhar o endereço IP do sistema executando o servidor ssh (usando o comando ifconfig). instale o openssh-server na VM, use seu cliente ssh e pronto.

Se você estiver usando uma interface NAT, pode ser mais complicado e geralmente não é recomendado.


11
Para pessoas que não sabem, não se esqueça de iniciar o servidor ssh usando service sshd startou se você deseja iniciá-lo na inicializaçãochkconfig sshd on
Anthony Hatzopoulos

21

Na verdade, existem várias boas razões para usar o NAT com suas VMs, em vez da interface com ponte. (Essa é uma pergunta antiga, mas surgiu como meu primeiro resultado pesquisando como fazer isso, migrando do VirtualBox para onde eu faço. o tempo todo, então achei que vale a pena adicionar)

Apenas algumas razões para usar o NAT são:

  • É fácil e portátil
  • se você estiver em uma LAN de cliente que exija um endereço MAC conhecido para obter um IP (caso contrário, terá que tentar adivinhar os não utilizados e arriscar um conflito e geralmente chamar a atenção de si mesmo :)),
  • coisas como permitir que suas VMs usem um único servidor proxy em seu host (ou seja, se você não controla a rede em que você está), ou ser capaz de firewall / filtrar o tráfego de broadcast (janelas etc.) na saída em um Local conveniente.
  • poder atribuir a eles um IP fixo ou reservado para que você possa consultá-los por nome / IP de fora do host (novamente, se você não conseguir obter reservas na rede com uma interface em ponte)
  • mas acima de tudo, ele permite que você se esconda atrás de uma única configuração de firewall em seu host e compartilhe as coisas entre eles de uma maneira mais protegida, em vez de expor todas as VMs ao "selvagem" e ter que protegê-las individualmente, etc. .. Assim como você faz com um modem / roteador da Internet

De qualquer forma, para o meu caso (VMWare Workstation 10, host Linux, OS X Guest) e qualquer pessoa que se depare com isso, esta é a visão geral do que funcionou para mim. Além do waffling e what-ifs, existem realmente apenas três etapas principais.

  • Portanto, primeiro você precisa decidir o que deseja permitir à sua VM / convidado "fora" do seu host (observe como abaixo, você poderá acessá-lo facilmente a partir do próprio host). Uma aposta segura seria apenas expor / permitir apenas SSH (porta 22) às máquinas na sua sub-rede. Você também pode permitir a porta 80/443 se tiver um servidor web na VM, etc, e também pode usar um "túnel" para acessar outros serviços usando SSH (mostrará o exemplo abaixo) e usar FUSE / SSHFS para fornecer ao seu host acesso ao sistema de arquivos .. (ou o recurso de pasta compartilhada no VMWare, mas ainda não o usei).

Portanto, a idéia é algo como: "Permitir que coisas na rede local do meu host (por exemplo, 10.1.1.0/24 ou 192.168.1.0/24) se conectem à porta 22222 no host, que encaminharemos para a porta 22 de um host. convidado específico ". Deve ser um convidado específico, é claro (isso torna a possibilidade de configurar seus IPs ainda mais úteis, e você pode alterá-los todos em um só lugar sem abrir cada VM), assim como fazê-lo através do roteador da Internet para permitir coisas de jogos através de etc.

  • Em seguida, tendo decidido quais serviços, você precisará

    • permita conexões na sua máquina host à porta "externa" via iptables / firewall. A porta 22 provavelmente já será usada no host pelo sshd, portanto você pode usar algo como 22222. Nesse caso, adicione algo como isto em /etc/ufw/before.rules (e reinicie o ufw)

      # Sua máscara de rede / sub-rede local pode ser algo como 10.1.1.0/24 ...

      -Ufw-before-input -p tcp --dport 22222 -m state --state NEW -s my_subnet_and_mask -j ACCEPT `

    • forneça às suas VMs um IP reservado na configuração principal do VMware DHCP ( opcional, mas mais fácil de confiar se você quiser "furar" a partir do host ), adicionando algo assim na parte inferior de / etc / vmware / vmnet8 / dhcpd / dhcpd.conf

      # Just like a normal dhcpd reservation
      host my_vm_1 {
           hardware ethernet *your_vm_eth_mac_here**;
           # This is in default range for guests, but outside the 'pool'.
           # - check that it matches your vmware config
           fixed-address 192.168.198.10; 
           # And/or your own internal nameserver etc
           option domain-name-servers 8.8.8.8;
           option domain-name "some_domain_suffix";
           # This is the default default-route of the VM
           option routers 192.168.198.2; 
      }
      
    • Diga ao VMWare para encaminhar conexões de 22222 para guest: 22 adicionando isso à seção [incomingtcp] do /etc/vmware/vmnet8/nat/nat.conf e reinicie o (s) serviço (s) vmware (consulte a nota abaixo)

      [incomingtcp]

      22222 = 192.168.198.10:22

    • Você também pode precisar permitir conexões da porta 22 em seu convidado, dependendo do que é / se ele possui um firewall próprio. Nesse caso de convidado do OS X, era para habilitar o "login remoto" através das configurações de compartilhamento, no linux pode ser via ufw como no host acima, etc.

Portanto, quando tudo estiver pronto, você poderá estar no seu laptop ou outra máquina na LAN, ssh na sua estação de trabalho (host do vmware) em 22222, e você será desviado para o convidado que pediu para encaminhar. Como mencionado acima, se você também disser que deseja conectar-se ao servidor postgres no convidado (ou servidor vnc, que geralmente não é criptografado), poderá fazer um túnel no mesmo comando (em vez de adicioná-lo também ao dhcp conf). Por exemplo

console ~> ssh root@hostip -p 22222 -L 54320:localhost:5432

e você seria transferido para o convidado via ip forward no vmware e poderia apontar sua ferramenta pgadmin3 para localhost: 54320 (não priveleged) no seu laptop, e seu tráfego na rede seria criptografado. (Observe 'localhost' já está encaminhado para o convidado)

Notas

  • Existem várias maneiras de fazer isso. Por um lado, você pode simplesmente fazer um túnel para hospedar e especificar o IP do convidado no -L e ele "romperá" e o indicará, mas a opção nat.conf é boa e conveniente e você não precisa digitá-lo toda vez. Existem também outras formas de encaminhamento de porta
  • Eu já tinha visto referências em alguns threads de uma GUI de rede virtual para fazer isso (como o virtualbox tem), mas não consegui encontrá-lo nesta versão
  • Eu não uso o Windows, portanto, embora eu assuma que seria muito semelhante à configuração como host, não tenho certeza. As configurações de NAT devem funcionar para qualquer convidado do vmware (embora eu não tenha usado nenhuma outra versão do VMWare)
  • O VMware configura uma rota para que o host possa entrar em contato diretamente com o convidado NAT, ou seja, no console do host, eu posso executar ping / ssh etc., o convidado NAT 192.168.198.10 (definido acima) diretamente

    console ~> route -n
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    <snip>
    192.168.198.0   0.0.0.0         255.255.255.0   U     0      0        0 vmnet8
    192.168.233.0   0.0.0.0         255.255.255.0   U     0      0        0 vmnet1
    
  • De uma nota do linux, há alguns mexendo com o vmware com o systemd init para iniciar automaticamente, e junto com isso eu descobri que não posso simplesmente reiniciar o vmware (o vmci não carrega novamente) e preciso reiniciar minha máquina para fazer com que o material NAT / DHCP fique acima, mas você pode não ter o problema. Existem alguns tópicos com soluções systemd

Parece ótimo, mas o ufw não parece estar presente na minha máquina OS X 10.9.5. Isso era algo que o OS X mais antigo tinha, mas agora está usando outra coisa?
Steve Jorgensen

Hey @SteveJorgensen, o ufw está no linux (meu host é linux e o convidado foi o OS X nesta resposta), mas é a mesma idéia do OS X como host; permita o acesso a alguma porta específica (no caso acima 22222) no host com qualquer ferramenta apropriada e peça ao VMWare para fazer o encaminhamento ao convidado. A outra menção ao ufw foi que, independentemente do que você tenha como convidado, ele também pode ter um firewall ativado, portanto, você pode precisar fazer login no convidado e permitir acesso à porta para a qual estava redirecionando (no caso acima, 22)
herdingofthecats

Não tenho o OS X disponível no momento, mas me lembro de usá-lo ipfwem algum momento. Eu fiz uma pesquisa rápida para você e não vi muitas postagens úteis, mas isso menciona pfctl, o que vejo em outra postagem parece substituir o pfctl no OS X 10.10. Eu não posso testá-lo muito, mas espero que ajude um pouco
herdingofthecats

2

Para simplificar as coisas:

  1. Execute sua VM
  2. No menu> Máquina virtual> Adaptador de rede> Ponte.
  3. Em sua VM, encontrar o seu endereço IP, como no linux: ifconfig.
  4. No host, ssh usando ssh user@ip.

Suponho que você tenha um serviço SSH instalado e em execução.


1

Em vez de saber o IP para o SSH, configurei o Avahi nos meus convidados do Linux para que ele transmita um nome de host dinâmico, confira minha resposta aqui: /superuser//a/710233/242604

Espero que isto ajude!


-1

Você pode usar uma interface de rede em ponte que ajuda a conectar-se à Internet e facilitar a conexão SSH.

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.