wie man zu einem IPv6 Ubuntu in einem LAN ssh?

57

Ich kann meine Ubuntu-Box per Befehl anpingen: (wobei c2h2ttt in / etc / hosts aufgeführt ist)

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

Und wenn ich es versuche ssh -6 c2h2ttt, zeigt es:

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

Was ist der richtige Befehl?


Auf der Serverseite hat / etc / ssh / sshd_config:

ListenAddress ::
ListenAddress 0.0.0.0

Ich konnte über ipv4 auf port 22 auf c2h2ttt ssh und netstat -lnt | grep :22ist

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 wird verwendet und lässt eingehenden Datenverkehr auf Port 22 zu

root@c2h2think:~# ufw status
Status: active

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

Und die iptables Konfiguration:

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
quelle
Möglicherweise müssen Sie Ihre sshd.conf-Datei bearbeiten und / oder sshd neu starten, um zu erkennen, dass neue v6-Adressen zum Abhören verfügbar sind.
Überprüfen Sie, was netstat -lnt | grep :22(open listening numeric tcp sockets | mit: 22) sagt.
Ephemient
Sie haben Port 22 mit ip6tables geöffnet ... richtig?
Ignacio Vazquez-Abrams
Eine Sekunde überprüfe ich ip6tables
c2h2

Antworten:

89

Versuchen Sie, die Schnittstelle zum ssh-Client anzugeben. Mit dem Dienstprogramm ping6 können Sie eine Schnittstelle angeben. Ssh verfügt jedoch nicht über einen Schalter. Sie müssen die folgende Syntax verwenden:

ssh -6 fe80 :: 21b: 21ff: fe22: e865% eth1
John T
quelle
2
wow, es funktioniert danke! nur weil das eth1 problem
c2h2 24.01.11
2
versuchte das, arbeitete auch für mich! Warum muss man die Schnittstelle angeben?
Max Beikirch
9
@MaxBeikirch, weil JEDE voll funktionsfähige Netzwerkschnittstelle eine fe80: -Adresse hat. Das System weiß also nicht, an welche Schnittstelle der Datenverkehr gesendet werden soll. Dies ist ein Verkehrsproblem. Bei anderen Adressen trifft das System häufig intelligente Entscheidungen, da der Computer Routen zu "nahe gelegenen" Adressen zuordnet (dh Adressen im selben Subnetz), aber das funktioniert nicht mit fe80: Da alle Netzwerkschnittstellen Teil desselben Subnetzes sind.
TOOGAM
1
@TOOGAM Wie kann ich das Schnittstellen-Postfix für einen Host in angeben ~/.ssh/config?
PVitt
@PVitt: Die übliche Methode besteht darin, eine Systemkennung (z. B. eine IP-Adresse) anzugeben und dann ein Prozentzeichen und anschließend einen Schnittstellennamen zuzuordnen, wie die Antwort zeigt, die sich auf% eth1 bis zum Ende von IPv6 bezieht Adresse. eth1 war die Schnittstellenkennung. Wenn dies nicht funktioniert, überprüfen Sie die [Manpage für OpenSSHs Datei mit dem Namen config] (man.openbsd.org/cgi-bin/man.cgi?query=ssh_config&sektion=5) eine neue Frage (zu SuperUser) mit genaueren Details, damit wir Ihnen weiterhelfen können.
TOOGAM
8

Lokale Linkadressen sollten nicht für SSH verwendet werden, sondern für das Bootstrapping von Protokollen auf niedriger Ebene. Wenn Sie in Ihrem Netzwerk kein vom Internetdienstanbieter bereitgestelltes Präfix verwenden können, generieren Sie stattdessen ein eindeutiges lokales Präfix aus fd00 :: / 8:

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

Paul
quelle
//, Wie greift man auf eine IPV6-Adresse zu, die im globalen IPv6-Internet routingfähig ist?
Nathan Basanese
@ NathanBasanese: Ihr ISP muss Ihnen einen IPv6-Dienst bereitstellen, oder Sie richten einen Tunnel mit einem der IPv6-Broker ein, z. B. Hurricane Electric
Radu C,
3
Lokale Linkadressen sind Netzwerkadressen. Wenn Sie sie für SSH verwenden möchten, fahren Sie fort. Sie müssen nur wissen, wie Sie mit Komplikationen umgehen können, wie sie in dieser Frage und in der Antwort von John T. erörtert werden. Ich hatte einen Fall, in dem ein ULA (fd00 :: / 8) nicht wie erhofft zugewiesen wurde. In diesem Fall funktionierte SSH mit einem Link-Local (fe80 :: / 16) hervorragend. Ich vermeide Link-Local nur, weil ich mich um das Routing kümmern muss (weil ich eine Schnittstelle angeben muss), aber nicht, weil die Adressen technisch weniger in der Lage sind, Datenverkehr zu senden oder zu empfangen.
TOOGAM
2

Um eine Verbindung zu SSH IPv6 herzustellen, verfügen Sie am häufigsten über IPv6-ISP-Konnektivität auf Ihrem Computer und versuchen Sie es als.

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

und dieser Befehl wird zum ersten Mal aufgefordert, den SSH-Schlüssel zu bestätigen. als TypY/Yes

Hinweis: 2205:f200:40:401::9ab4:8b43Meinen Sie Ihr IPv6. Dieses einzige Beispiel für IPv6. Vergessen Sie nicht, IPv6 zu ersetzen.

Shiv Singh
quelle