Tentando SSH para VM local Ubuntu com Putty

145

Eu configurei uma VM do servidor Ubuntu, instalei o OpenSSH e agora estou tentando conectar-me a ela usando o Putty. No Putty, em "Nome do host", coloquei "Ubuntu", já que era assim que eu pensava que era chamado quando configurei a VM. No entanto, recebo o erro: "Conexão expirada".

Eu também tentei colocar "127.0.0.1" no nome do host no Putty e apenas obtive "Conexão recusada". Observe que eu fiz o encaminhamento de porta para SSH e HTTP no Oracle VM, por isso não sei como fazê-lo funcionar.

wickywills
fonte
O FWIW em ponte / host apenas não funcionou para mim, mas eu pude contorná-lo, em essência, apenas SSH'ing "out" (o scp pode ir nos dois sentidos, afinal), então eu não precisava de acesso SSH dentro do hóspede.
Rogerdpack 6/12/16

Respostas:

183

O VirtualBox criará uma rede privada (10.0.2.x) que será conectada à sua rede host usando NAT . (A menos que configurado de outra forma.)

Isso significa que você não pode acessar diretamente nenhum host da rede privada a partir da rede host. Para fazer isso, você precisa de algum encaminhamento de porta. Nas preferências de rede da sua VM, você pode, por exemplo, configurar o VirtualBox para abrir a porta 22 no 127.0.1.1 (um endereço de loopback do seu host) e encaminhar qualquer tráfego para a porta 22 do 10.0.2.1 (o endereço interno da sua VM)

Dessa forma, você pode apontar a massa para a Porta 22 de 127.0.1.1 e o VirtualBox redirecionará essa conexão para a sua VM, onde seu daemon ssh responderá, permitindo que você faça o login.

michas
fonte
20
Obrigado, isso funcionou para mim. De cygwin eu posso agora ssh [email protected]e estou no painel que você precisa é Configurações-> Network-> Port Forwarding, e meu agora parece como mostrado em:. Imgur.com/BjGh3N2
user7543
38
Isso NÃO funcionará se você já tiver o ssh em execução no seu host, porque as portas se sobrepõem. Redirecione a porta 127.0.1.1:2222 para 10.0.2.X: 22 e execute o 'ssh 127.0.1.1 -p 2222' do seu host ''
dzlatkov
8
Além disso, verifique se o openssh-server está instalado no sistema operacional do cliente. sudo apt-get install openssh-server
Illuminati
17
Só tive esse problema - obrigado pela explicação. Eu basicamente segui o que você disse. Eu fui para Configurações e minha conexão mostrou 'NAT'. Cliquei na opção 'encaminhamento de porta' na parte inferior da tela. Eu nomeei 'PuTTY-port-fwd', protocolo TCP, host IP 127.0.0.1 host 2222 host 22.4 convidado IP 10.0.2.15 host 22. Em seguida, iniciei o PuTTY e o configurei para 127.0.0.1 2222 e ele foi conectado a meu OpenSUSE vm. Obrigado rapazes, espero que isso ajude alguém no futuro ;-)
BubbleMonster
3
Isso funcionou para mim, embora eu tenha que dizer ao VirtualBox para abrir a porta 2222 no 127.0.0.1. Em seguida, consegui fazer o login usandossh -p 2222 [email protected]
mchen.ja 25/01/17
44

Eu queria usar o putty para conectar-me ao ubuntu na caixa virtual (por razões de conforto, o VB é estranho. Não posso trabalhar a menos que esteja em um terminal adequado). De qualquer forma,

  1. Verifique se o cliente ssh está instalado no seu Linux. Caso contrário, instale-o sudo apt install ssh.
  2. Desligue o sistema operacional.
  3. Agora no seu VB, vá Settings -> Network ->em Adapter 1escolha Host-only adapter-> clique OK.
  4. Agora inicie o seu sistema operacional. Corra ifconfig; agora o endereço inet é o seu IP.
  5. Use isso e execute-o em sua massa. Entre com suas credenciais.

A única desvantagem de usar o adaptador somente host é que o sistema operacional convidado não terá acesso à rede mais ampla (por exemplo, a Internet).

Se você também precisar que sua VM tenha acesso à Internet, deixe o Adaptador 1 como NAT e ative o Adaptador 2, configurado como um adaptador somente para host. Isso permitirá que sua VM se conecte à Internet usando NAT e faça uma conexão local com seu host usando somente host.

Priya_user1907390
fonte
4
"ponte" vai colocar o ip na sua interface e ponte de acesso local para a maior internet
Duke
2
A vantagem de usar duas interfaces, como descrito aqui, em ponte, é que você não depende do servidor dhcp local aceitar suas solicitações. A maioria dos servidores dhcp em locais públicos (ariport, aviões, hotéis e até a maioria das redes da empresa) não oferece um segundo IP através do mesmo adaptador wifi, portanto, uma VM em ponte não funcionará nesse ambiente. Aqui está um bom passo a passo sobre como definir esta configuração específica: christophermaier.name/2010/09/01/…
Yves Dorfsman
Funciona como um encanto, mas você deve colocar o Adaptador 2 na 3ª opção para que as pessoas deixem o NAT em paz
user3502626
muito obrigado.
Lucas
muito obrigado. mas quando altero a configuração da rede Ubuntu de NATpara host only adapterela não pode mais se conectar à Internet, alguma solução?
Luke
19

Primeiro, você precisa decidir se sua VM está conectada à sua máquina host por meio de uma conexão em ponte ou por um NAT, mas é necessário colocar o endereço IP da VM em massa para poder conectar-se ao ip, na execução do terminal da VM este comando para mostrar o endereço IP da máquina (e nenhum 127.0.0.1 não é o endereço IP da máquina)

VM # ip addr show

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:d9:16:b3 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.1 scope global eth0
       valid_lft forever preferred_lft forever

neste caso, meu endereço IP será 10.0.2.15,

Primeiro, tente garantir que você possa se comunicar em um nível básico com a VM, abra uma janela de terminal no host e tente executar ping na VM

HOST # ping 10.0.2.15

PING 10.0.2.15 (10.0.2.15) 56(84) bytes of data.
64 bytes from 10.0.2.15: icmp_seq=1 ttl=64 time=0.045 ms
64 bytes from 10.0.2.15: icmp_seq=2 ttl=64 time=0.110 ms
64 bytes from 10.0.2.15: icmp_seq=3 ttl=64 time=0.099 ms

Se você obtiver o resultado da formiga, verifique se possui um serviço ssh em execução na VM, no terminal do seu tipo de VM como raiz,

VM # netstat -lnpt | grep 22
tcp   0  0  0.0.0.0:22  0.0.0.0:*  LISTEN  2361/sshd

Isso indica que temos um serviço / processo com o PID (2361) chamado sshd (daemon OpenSSH) ouvindo a porta 22.

Você pode testar se o serviço funciona corretamente, tentando ssh para ele a partir da VM,

VM # ssh 127.0.0.1

Em seguida, você precisa ter certeza de que não está bloqueando a porta 22 no firewall / iptables, não acredito, mas verifique assim mesmo. Na VM, digite este comando para mostrar as tabelas de ip,

VM # iptables -nvL INPUT

na saída você deve ter uma linha como esta:

0  0  ACCEPT  tcp  --  *  *  0.0.0.0/0  0.0.0.0/0  tcp  dpt:22  ctstate  NEW
Rabin
fonte
Tentei isso, e aparentemente o meu endereço IP é 10.0.2.15. Tentei inserir isso no Putty e obtive o connection timed outerro novamente. Eu também tentei o nvLcomando que você menciona, e obter uma carga de (por falta de uma palavra melhor) coisas - Chain INPUT (policy accept......, chain FORWARD.....etc
wickywills
Reescrevo minha resposta com mais alguns pontos que você pode verificar, por favor me avise.
Rabin
2
E se o ping 10.0.2.15 expirar? Eu uso NAT.
Dan Dascalescu
O encaminhamento de porta foi a resposta.
Dan Dascalescu
Por conveniência: iptables -A INPUT -p tcp --dport ssh -j ACCEPTpermitirá o tráfego de entrada se você não vir o TCP nas suas tabelas de ip.
Eric Hodgins
15

Minha resolução era semelhante à de Roman T, no entanto, eu precisava adicionar algumas etapas extras. No meu caso, eu tinha o Ubuntu Server 14 VM em execução no Windows 8 Desktop no domínio do Windows 2008. Se eu tentasse o NAT ou o Bridge, poderia acessar a Internet, mas não conseguiria me conectar via SSH.

Se eu tentasse o Host Only Adapter, isso permitiria que eu usasse o SSH na máquina, mas não conseguia acessar a Internet.

Tentei o encaminhamento de porta também e sem alegria. Abriu o Wireshark e ele simplesmente não estava encontrando VM.

Então, minha solução foi adicionar um segundo adaptador de rede.

Método

Com a VM desligada

  1. Clique em Configurações> Rede Clique em Adaptador 1 e escolha Adaptador em Ponte
  2. Clique em Adapter 2 e escolha Host Only Adapter
  3. Clique em Arquivo> Preferências> Redes em Redes NAT, se você não vir uma rede NAT, clique no ícone + para adicionar a rede NAT.
  4. Clique em Redes somente de host, se você não vir uma rede somente de host, clique no ícone + para adicionar uma

Iniciar VM

  1. Para ver o adaptador de rede, você precisa digitar

    ifconfig -a
    
  2. Você pode ver que o adaptador de rede foi adicionado com um endereço mac, mas não com um IP?

  3. Nesse caso, você precisa editar o arquivo / etc / network / interfaces para configurar o DHCP. Exemplo abaixo usando VI / VIM, mas você pode usar o editor de sua escolha

    sudo vi /etc/network/interfaces
    
  4. adicione as linhas

    auto eth1
    iface eth1 inet dhcp
    
  5. salve e saia do arquivo.
  6. Em seguida, tente reiniciar o serviço de rede usando o comando abaixo

    sudo service networking restart
    
  7. Ou, se isso falhar, reinicie a VM.
  8. Uma vez reiniciado, digite abaixo para verificar se um endereço IP foi atribuído a eth1

    ifconfig -a
    
  9. Nesse caso, veja se você pode fazer o SSH na VM
mrjamesmyers
fonte
Eu tentei sua solução, mas nenhum IP foi atribuído à nova interface. Além disso, tenho o DHCP ativado no meu VBox.
Athlan 21/02
12

As instruções a seguir funcionaram com o Ubuntu 14.04 e o Oracle VirtualBox 4.3.30.

Faça isso no VirtualBox:

  1. Clique com o botão direito na sua máquina virtual, selecione "Configurações" e, em seguida, selecione "Rede".

  2. Ao lado de "Conectado a", selecione "Adaptador somente para host". Como observação lateral, o "Bridged Adapter" também funcionará. Verifique a documentação do VirtualBox para obter mais detalhes sobre cada opção.

Faça isso dentro da sua máquina virtual:

  1. Encontre o seu endereço IP de rede, abrindo um terminal e digitando ifconfig. Observe o endereço IP exibido ao lado de eth0, em "inet addr". Você também pode ver seu endereço IP se clicar no ícone Rede no canto superior direito da área de trabalho e, em seguida, selecionar "Informações de conexão".

  2. Instale o openssh-server digitando o seguinte no terminal:

    sudo apt-get install openssh-server
    
  3. Apenas no caso, reinicie a máquina virtual.

Agora você pode conectar-se a partir do PuTTY usando o endereço IP da etapa 1 acima e a porta 22.

Roman T
fonte
2

Para o Ubuntu 18.04 e o VirtualBox 5.2:

  1. Criar uma interface de rede host

    Eu. No Virtualbox, clique em File/ Host Network Manager.

    ii. Se você ainda não possui um adaptador de rede host (padrão vboxnet0), clique em Create.

  2. Ativar configurações do adaptador somente host para VM

    Eu. No Virtualbox, clique com o botão direito na sua VM e selecione Settings.

    ii. Clique Networke selecione Adapter 2.

    iii. Clique em Enable Network Adapter.

    iv. Em Attached to:selecionar Host-only Adapter. O nome do adaptador que você criou na etapa 1 deve aparecer (padrão vboxnet0).

  3. Definir configurações de rede na VM

    Eu. Comece o seu VM e verificar qual a interface foi adicionado: ip a. Procure a interface que não possui um inetendereço. No meu, foi enp0s8.

    ii. Edit /etc/netplan/01-netcfg.yaml. por exemplo sudo vi /etc/netplan/01-netcfg.yaml.

    iii. Sob as configurações do adaptador original, adicione detalhes da configuração:

    enp0s8:
        addresses: [192.168.56.2/24]
        gateway4: 192.168.56.1
        dhcp4: no
    

    Isso atribui um endereço IP estático à sua VM para conveniência de SSH. Se você deseja dhcpmanipular o endereçamento, deixe de fora a configuração de endereço e gateway e defina dhcp4como yes.

    iv. Atualizar o arquivo de configuração: sudo netplan apply.

  4. SSH na sua VM

    Eu. Se você não tiver instalado sshna VM: sudo apt install ssh.

    ii. De sua máquina host, SSH na VM: ssh <username>@192.168.56.2.

ooknosi
fonte
Obrigado, salvou o meu dia!
anber