come ssh ad una ipv6 ubuntu in una LAN?


54

Sono in grado di eseguire il ping della mia casella Ubuntu tramite comando: (dove c2h2ttt è elencato in / 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

E quando ci provo ssh -6 c2h2ttt mostra:

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

Qual è il comando corretto?


Sul lato server / etc / ssh / sshd_config ha:

ListenAddress ::
ListenAddress 0.0.0.0

Sono stato in grado di ssh a c2h2ttt via ipv4 sulla porta 22. e netstat -lnt | grep :22 è

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

ufw è usato e consente qualsiasi traffico in entrata sulla porta 22

root@c2h2think:~# ufw status
Status: active

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

E la configurazione di 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  

Potrebbe essere necessario modificare il file sshd.conf e / o riavviare sshd in modo che comprenda che ci sono nuovi indirizzi v6 da ascoltare.

Controlla cosa netstat -lnt | grep :22 (aperto ascolto socket tcp numerici | contenente: 22) dice.
ephemient

tu fatto aprire la porta 22 con ip6tables ... giusto?
Ignacio Vazquez-Abrams

Un secondo controllo ip6tables
c2h2

Risposte:


81

Prova a specificare l'interfaccia con il client ssh. L'utilità ping6 ti permette di specificare un'interfaccia, tuttavia ssh non ha un interruttore per questo, devi usare questa sintassi:

ssh -6 fe80::21b:21ff:fe22:e865%eth1

2
wow, funziona grazie! solo perché il problema eth1
c2h2

2
ci ho provato, ha funzionato anche per me! Perché uno deve specificare l'interfaccia?
Max Beikirch

8
@MaxBeikirch perché OGNI interfaccia di rete pienamente operativa avrà un indirizzo: fe80 :. Quindi, il sistema non sa a quale interfaccia inviare il traffico. Questo è un problema di routing del traffico. Per altri indirizzi, il sistema spesso fa scelte intelligenti perché il computer assegna percorsi a indirizzi "vicini" (ovvero indirizzi nella stessa sottorete), ma ciò non funziona con fe80: poiché tutte le interfacce di rete fanno parte della stessa sottorete.
TOOGAM

1
@TOOGAM Come posso specificare il suffisso dell'interfaccia per un host in ~/.ssh/config?
PVitt

@PVitt: il modo usuale è specificare un identificatore di sistema (come un indirizzo IP), quindi virare su un segno di percentuale e quindi un nome di interfaccia, come dimostrato dalla risposta che ha virato su% eth1 alla fine di IPv6 indirizzo. eth1 era l'identificatore di interfaccia. Se ciò non funziona, controlla la [man page per il file OpenSSH denominato config] (man.openbsd.org/cgi-bin/man.cgi?query=ssh_config&sektion=5), e se ciò non aiuta, considera la possibilità di fare una nuova domanda (su SuperUser) con dettagli più precisi in modo che possiamo aiutarti ulteriormente.
TOOGAM

8

Gli indirizzi locali di collegamento non dovrebbero essere usati per SSH, sono per roba di bootstrap di protocollo di basso livello. Se non si dispone di un prefisso fornito dall'ISP da utilizzare sulla rete, generare invece un prefisso locale univoco da fd00 :: / 8:

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


//, Come si accede ad un indirizzo IPV6 che è instradabile nell'Internet IPv6 globale, però?
Nathan Basanese

@NathanBasanese: il tuo ISP deve fornirti il ​​servizio IPv6 o impostare un tunnel con uno dei broker IPv6, come Uragano elettrico
Radu C

3
Gli indirizzi locali di collegamento sono indirizzi di rete. Se vuoi usarli per SSH, vai avanti. Basta sapere come gestire qualsiasi complicazione (s), come quello che discutono questa domanda e la risposta di John T. Ho avuto un caso in cui un ULA (fd00 :: / 8) non è stato assegnato come sperato. In tal caso, SSH utilizzando un link-local (fe80 :: / 16) ha funzionato alla grande. Evito link-local solo per il fastidio di gestire il routing (che richiede di specificare un'interfaccia), ma non perché gli indirizzi siano tecnicamente meno capaci di inviare o ricevere traffico.
TOOGAM

2

Per connettere SSH IPv6, la maggior parte della connettività ISP IPv6 è installata sul computer e che provare come

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

e questo comando chiederà prima volta di confermare la chiave SSH. di tipo Y/Yes

Nota: 2205:f200:40:401::9ab4:8b43 significa il tuo IPv6. Questo solo esempio di IPv6 quindi non dimenticare di sostituire IPv6.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.