Comment SSH à un Ubuntu IPv6 dans un réseau local?

57

Je peux envoyer une requête ping à ma boîte Ubuntu via la commande: (où c2h2ttt est répertorié dans / 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

Et quand j'essaye, ssh -6 c2h2tttça se voit:

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

Quelle est la commande correcte?


Côté serveur, / etc / ssh / sshd_config a:

ListenAddress ::
ListenAddress 0.0.0.0

J'ai été capable de ssh à c2h2ttt via ipv4 sur le port 22. et netstat -lnt | grep :22est

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 est utilisé et autorise tout trafic entrant sur le port 22

root@c2h2think:~# ufw status
Status: active

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

Et la configuration d'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
la source
Vous devrez peut-être modifier votre fichier sshd.conf et / ou redémarrer sshd pour qu'il réalise qu'il existe de nouvelles adresses v6 sur lesquelles écouter.
Vérifiez ce que dit netstat -lnt | grep :22(ouvert les prises tcp numériques d'écoute | contenant: 22).
éphémère
Vous avez port ouvert 22 avec ip6tables ... droit?
Ignacio Vazquez-Abrams le
Une seconde, je vérifie ip6tables
C2h2

Réponses:

89

Essayez de spécifier l'interface avec le client ssh. L'utilitaire ping6 vous permet de spécifier une interface. Cependant, ssh n'a pas de commutateur pour cela, vous devez utiliser cette syntaxe:

ssh -6 fe80 :: 21b: 21ff: fe22: e865% eth1
John T
la source
2
wow, ça marche merci! juste parce que le problème d'eth1
c2h2
2
essayé cela, a travaillé pour moi aussi! Pourquoi faut-il spécifier l'interface?
Max Beikirch
9
@ MaxBeikirch parce que CHAQUE interface réseau pleinement opérationnelle aura une adresse fe80:. Le système ne sait donc pas à quelle interface envoyer le trafic. C'est un problème d'acheminement du trafic. Pour les autres adresses, le système fait souvent des choix intelligents, car l'ordinateur attribue des itinéraires aux adresses "proches" (c'est-à-dire aux adresses du même sous-réseau), mais cela ne fonctionne pas avec fe80: toutes les interfaces réseau font partie du même sous-réseau.
TOOGAM
1
@TOOGAM Comment puis-je spécifier le postfix d'interface pour un hôte dans ~/.ssh/config?
PVitt
@PVitt: La méthode habituelle consiste à spécifier un identifiant système (une adresse IP, par exemple), puis un signe de pourcentage, puis un nom d'interface, comme le montre la réponse qui a ajouté% eth1 à la fin de l'IPv6. adresse. eth1 était l'identifiant de l'interface. Si cela ne fonctionne pas, vérifiez la [page de manuel du fichier OpenSSH nommée config] (man.openbsd.org/cgi-bin/man.cgi?query=ssh_config&sektion=5), et si cela ne vous aide pas, envisagez de le faire. une nouvelle question (sur SuperUser) avec des détails plus précis afin que nous puissions vous aider davantage.
TOOGAM
8

Les adresses locales de liaison ne sont pas censées être utilisées pour SSH, elles servent à l'initialisation de protocole de bas niveau. Si vous n'avez pas de préfixe fourni par votre fournisseur d'accès à utiliser sur votre réseau, générez un préfixe local-unique à partir de fd00 :: / 8:

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

Paul
la source
//, comment accéder à une adresse IPV6 routable dans l'Internet IPv6 global?
Nathan Basanese
@NathanBasanese: votre FAI doit vous fournir le service IPv6 ou vous devez configurer un tunnel avec l'un des courtiers IPv6, comme Hurricane Electric
Radu C le
3
Les adresses locales de liaison sont des adresses de réseau. Si vous voulez les utiliser pour SSH, continuez. Il suffit de savoir comment gérer les complications, comme ce que cette question et la réponse de John T discutent. J'ai eu un cas où un ULA (fd00 :: / 8) n'a pas été assigné comme espéré. Dans ce cas, SSH utilisant un lien local (fe80 :: / 16) a bien fonctionné. J'évite link-local uniquement à cause des difficultés liées au routage (nécessité de spécifier une interface), mais pas parce que les adresses sont techniquement moins capables d'envoyer ou de recevoir du trafic.
TOOGAM
2

Pour connecter SSH IPv6, vous devez disposer de la connectivité IPv6 ISP sur votre ordinateur et essayer en tant que.

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

et cette commande demandera la première fois de confirmer la clé SSH. que le typeY/Yes

Remarque: 2205:f200:40:401::9ab4:8b43signifie votre IPv6. Cet exemple unique d'IPv6 alors n'oubliez pas de vous remplacer IPv6.

Shiv Singh
la source