¿Cómo ssh a un ubuntu ipv6 en una LAN?

57

Puedo hacer ping a mi caja de Ubuntu a través del comando: (donde c2h2ttt aparece en / etc / hosts)

c2h2@c2h2crawler:~/ttt$ ping6 -I eth1 c2h2ttt
PING c2h2ttt(c2h2ttt) from fe80::21b:21ff:fe22:e865 eth1: 56 data bytes
64 bytes from c2h2ttt: icmp_seq=1 ttl=64 time=10.3 ms
64 bytes from c2h2ttt: icmp_seq=2 ttl=64 time=2.06 ms
64 bytes from c2h2ttt: icmp_seq=3 ttl=64 time=1.33 ms

Y cuando lo intento ssh -6 c2h2tttmuestra:

c2h2@c2h2crawler:~/ttt$ ssh -6 c2h2ttt
ssh: connect to host c2h2ttt port 22: Invalid argument

¿Cuál es el comando correcto?


En el lado del servidor / etc / ssh / sshd_config tiene:

ListenAddress ::
ListenAddress 0.0.0.0

Pude ssh a c2h2ttt a través de ipv4 en el puerto 22. y netstat -lnt | grep :22es

root@c2h2think:~# netstat -lnt | grep :22
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN
tcp6       0      0 :::22                   :::*                    LISTEN

Se utiliza ufw y permite el tráfico entrante en el puerto 22

root@c2h2think:~# ufw status
Status: active

To                         Action      From
--                         ------      ----
22                         ALLOW       Anywhere

Y la configuración de iptables:

root@c2h2think:~# ip6tables -L -v -n
Chain INPUT (policy DROP 55 packets, 10758 bytes)
pkts bytes target     prot opt in     out     source               destination 
    0     0 ACCEPT     all      lo     *       ::/0                 ::/0        

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination 

Chain OUTPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination 
    0     0 ACCEPT     all      *      lo      ::/0                 ::/0  
c2h2
fuente
Es posible que necesite editar su archivo sshd.conf y / o reiniciar sshd para que se dé cuenta de que hay nuevas direcciones v6 para escuchar.
Verifique lo que dice netstat -lnt | grep :22(receptáculos tcp numéricos abiertos de escucha | que contiene: 22).
Ephemient
Usted hizo abrir el puerto 22 con ip6tables ... ¿verdad?
Ignacio Vazquez-Abrams
Un segundo
verifico

Respuestas:

89

Intente especificar la interfaz para el cliente ssh. La utilidad ping6 le permite especificar una interfaz, sin embargo, ssh no tiene un interruptor para eso, debe usar esta sintaxis:

ssh -6 fe80 :: 21b: 21ff: fe22: e865% eth1
John T
fuente
2
wow, funciona gracias! solo porque el problema eth1
c2h2
2
Lo intenté, ¡funcionó para mí también! ¿Por qué hay que especificar la interfaz?
Max Beikirch
99
@MaxBeikirch porque CADA interfaz de red completamente operativa tendrá una dirección fe80: Entonces, el sistema no sabe a qué interfaz enviar el tráfico. Este es un problema de enrutamiento de tráfico. Para otras direcciones, el sistema a menudo toma decisiones inteligentes porque la computadora asigna rutas a direcciones "cercanas" (es decir, direcciones en la misma subred), pero eso no funciona con fe80: ya que todas las interfaces de red son parte de la misma subred.
TOOGAM
1
@TOOGAM ¿Cómo puedo especificar el postfix de interfaz para un host ~/.ssh/config?
PVitt
@PVitt: la forma habitual es especificar un identificador del sistema (como una dirección IP) y luego agregar un signo de porcentaje y luego un nombre de interfaz, como lo demuestra la respuesta que agregó% eth1 al final del IPv6 habla a. eth1 fue el identificador de la interfaz. Si eso no funciona, consulte la [página del manual para el archivo de OpenSSH llamado config] (man.openbsd.org/cgi-bin/man.cgi?query=ssh_config&sektion=5), y si eso no ayuda, considere hacer una nueva pregunta (en SuperUser) con detalles más precisos para que podamos ayudarlo más.
TOOGAM
8

No se supone que las direcciones locales de enlace se usen para SSH, son para cosas de arranque de protocolo de bajo nivel. Si no tiene un prefijo proporcionado por el ISP para usar en su red, genere un prefijo local único de fd00 :: / 8 en su lugar:

http://en.wikipedia.org/wiki/Unique_local_address

Pablo
fuente
//, ¿cómo se accede a una dirección IPV6 que es enrutable en Internet global IPv6?
Nathan Basanese
@NathanBasanese: su ISP debe proporcionarle el servicio IPv6 o puede configurar un túnel con uno de los corredores de IPv6, como Hurricane Electric
Radu C
3
Las direcciones locales de enlace son direcciones de red. Si quieres usarlos para SSH, adelante. Solo sepa cómo manejar cualquier complicación (es), como lo que discute esta pregunta y la respuesta de John T. He tenido un caso en el que un ULA (fd00 :: / 8) no se asignó como se esperaba. En ese caso, SSH usando un enlace local (fe80 :: / 16) funcionó muy bien. Evito el enlace local solo por la molestia de lidiar con el enrutamiento (necesidad de especificar una interfaz), pero no porque las direcciones sean técnicamente menos capaces de enviar o recibir tráfico.
TOOGAM
2

Para conectar SSH IPv6, la mayoría tiene conectividad IPv6 ISP en su computadora y luego intente como.

root@hostname[~]# ssh -6 2205:f200:40:401::9ab4:8b43

y este comando le pedirá la primera vez que confirme la clave SSH. que tipoY/Yes

Nota: 2205:f200:40:401::9ab4:8b43significa tu IPv6. Este es el único ejemplo de IPv6, así que no olvide reemplazar su IPv6.

Shiv Singh
fuente