![Problema común: ssh: conectarse al host 10.0.2.15 puerto 22: conexión rechazada](https://rvso.com/image/1157738/Problema%20com%C3%BAn%3A%20ssh%3A%20conectarse%20al%20host%2010.0.2.15%20puerto%2022%3A%20conexi%C3%B3n%20rechazada.png)
Estoy usando VirtualBox en Windows 10 (host) para crear dos máquinas virtuales ( Guest DT
y Guest S
). ¿Puedo utilizar SSH desde Guest DT
el Guest S
?
Guest DT
es ubuntuEscritorio18.04.Guest S
está ejecutando UbuntuServidor18.04.- Terminología de VirtualBox
No tengo experiencia con SSH. Busqué en Google y leí respuestas a "preguntas similares" en este sitio.
Error
En Guest DT
, hago esto:
$ ssh [email protected]
ssh: connect to host 10.0.2.15 port 22: Connection refused
Nota:
- Puedo hacer ping con éxito a 10.0.2.15
test
es mi nombre de usuario en elGuest S
.
Configuración del entorno
En Guest DT
:
$ ssh-keygen
$ cat ~/.ssh/id_rsa.pub
ssh-rsa <a very long key> neil@neil-VirtualBox
En Guest S
:
$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
$ touch ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys
$ echo "ssh-rsa <a very long key> neil@neil-VirtualBox" > ~/.ssh/authorized_keys
$ /etc/init.d/ssh restart
En Guest S
:
test@server01:~$ service sshd status
ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2018-06-15 02:05:04 UTC; 1h 16min ago
Process: 903 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
Main PID: 906 (sshd)
Tasks: 1 (limit: 2317)
CGroup: /system.slice/ssh.service
└─906 /usr/sbin/sshd -D
Jun 15 02:05:04 server01 systemd[1]: Starting OpenBSD Secure Shell server...
Jun 15 02:05:04 server01 sshd[906]: Server listening on 0.0.0.0 port 22.
Jun 15 02:05:04 server01 sshd[906]: Server listening on :: port 22.
Jun 15 02:05:04 server01 systemd[1]: Started OpenBSD Secure Shell server.
$ sudo ufw status
[sudo] password for test:
Status: inactive
/etc/ssh/sshd_config contains :
#PubkeyAuthentication yes
Respuesta1
Creo que la configuración de red predeterminada para el invitado de VirtualBox NAT
no está destinada a lograr este tipo de comunicación de red; pero basado en publicaciones antiguas puede ser posible mediantereenvíoun puerto que no es del sistema a un puerto invitado y usando el valor predeterminadodirección IP de bucle invertidopara llegar al huésped. 10.0.2.2 es el bucle invertido predeterminado.
Configurar redes
Sin embargo, lo más fácil es asegurarse de elegir la red correcta para cada uno de los Invitados. Apague sus máquinas invitadas, luego en VirtualBox edite elModo de red adecuado a sus necesidades (cuadrícula de notas).
Usando la red NAT predeterminada
Al usar NAT, VirtualBox usa una IP especial 10.0.2.2 como loopback (al menos creo que esto sigue siendo cierto). Por lo tanto, los puertos reenviados desde loopback están disponibles para todos los invitados. Creo que deberías poder aprovechar esto. Para comunicarse mediante una red NAT, será necesario uno de los siguientes:
Usando VBoxManage, configure el reenvío NAT de unpuerto que no es del sistema (1024–65535)a un inferiorpuerto del sistema (< 1024).
- En este caso, reenvíe algo como el puerto 2222 al puerto 22 (predeterminado para SSH). Esto también supone que usaremos
Guest S
la dirección IP de10.0.2.15
, según la pregunta. Configure el reenvío de puertos en Virtualbox Host, ejecute:
VBoxManage modifica vm "nombre de VM" --natpf1 "guestssh,tcp,,2222,,22"
Todo el tráfico TCP que llegue al puerto 2222 en cualquier interfaz de host se reenviará al puerto 22 del invitado. El nombre del protocolo tcp es un atributo obligatorio que define qué protocolo debe usarse para el reenvío (también se podría usar udp). El nombre guestsh es puramente descriptivo y se generará automáticamente si se omite. El número después de --natpf indica la tarjeta de red, como en otras partes de VBoxManage.
Verifique la regla agregada:
VBoxManage showvminfo miservidor | grep 'Regla'
Conéctese
Guest Server
a través del mapeo de bucle invertido del host y el reenvío de puertos paraGuest S
neil@neil-VirtualBox$ ssh -p 2222[correo electrónico protegido]
- En este caso, reenvíe algo como el puerto 2222 al puerto 22 (predeterminado para SSH). Esto también supone que usaremos
Alternativa: cambiar (Huéspedes)/etc/sshd_configescuchar en un puerto que no es del sistema (> 1024). Luego recarga ssh.
Respuesta2
Simplemente elimine todas las claves de huellas digitales ECDSA (probablemente SHA256) contenidas en el directorio de hosts conocidos.
- Correr
vi ~/.ssh/known_hosts
- Elimine todas las claves asociadas con la dirección IP del sujeto dentro del archivoknown_hosts.
- Ingrese la tecla "Esc" y luego la tecla "Shift" + ":" + "x"