如何SSH到局域网中的ipv6 ubuntu?


57

我可以通过以下命令ping我的Ubuntu盒:(其中c2h2ttt在/ 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

当我尝试ssh -6 c2h2ttt时显示:

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

正确的命令是什么?


在服务器端,/ etc / ssh / sshd_config具有:

ListenAddress ::
ListenAddress 0.0.0.0

我能够通过IPV4 ssh到c2h2ttt端口22和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,它允许端口22上的任何入站流量

root@c2h2think:~# ufw status
Status: active

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

和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  

您可能需要编辑sshd.conf文件和/或重新启动sshd,以便它意识到有新的v6地址可供监听。

检查什么netstat -lnt | grep :22(打开监听数字tcp套接字|包含:22)说。
短暂的2011年

确实使用ip6tables打开了端口22 ...对吗?
伊格纳西奥·巴斯克斯

一秒钟我检查ip6tables
c2h2 2011年

Answers:


89

尝试指定ssh客户端的接口。ping6实用程序允许您指定接口,但是ssh没有为此设置的开关,您必须使用以下语法:

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

2
哇,谢谢!仅仅因为eth1问题
c2h2 2011年

2
尝试过,也为我工作!为什么必须指定接口?
Max Beikirch 2015年

9
@MaxBeikirch,因为每个完全正常运行的网络接口都将具有fe80:地址。因此,系统不知道将流量发送到哪个接口。这是一个流量路由问题。对于其他地址,系统通常会做出明智的选择,因为计算机会将路由分配给“附近”地址(意味着同一子网中的地址),但是不适用于fe80:因为所有网络接口都是同一子网的一部分。
TOOGAM

1
@TOOGAM如何在中指定主机的接口后缀~/.ssh/config
PVitt

@PVitt:通常的方法是指定系统标识符(例如IP地址),然后添加一个百分号,然后添加一个接口名称,如将%eth1附加到IPv6末尾的答案所示地址。eth1是接口标识符。如果这样不起作用,请检查[OpenSSH的名为config的文件的手册页](man.openbsd.org/cgi-bin/man.cgi?query=ssh_config&sektion=5),如果这样做没有帮助,请考虑使一个新问题(有关SuperUser),其中包含更精确的详细信息,因此我们可以为您提供进一步的帮助。
TOOGAM

8

链接本地地址不应该用于SSH,它们用于低级协议引导程序。如果您的网络上没有ISP提供的前缀,请改为从fd00 :: / 8生成一个唯一的本地前缀:

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


//,但是,如何访问可在全球IPv6 Internet中路由的IPV6地址?
弥敦道(Nathan Basanese)

@NathanBasanese:您的ISP必须为您提供IPv6服务,或者您与其中一个IPv6代理建立隧道,例如Hurricane Electric
Radu C

3
链接本地地址是网络地址。如果要将它们用于SSH,请继续。只要知道如何处理任何并发症,例如这个问题和约翰·T的答案所讨论的。我遇到过一个未按预期分配ULA(fd00 :: / 8)的情况。在这种情况下,使用本地链接(fe80 :: / 16)的SSH效果很好。我避免本地链接仅是因为要处理路由的麻烦(需要指定接口),而不是因为地址从技术上讲不能发送或接收流量。
TOOGAM 2015年

2

要连接SSH IPv6,您通常在计算机上具有IPv6 ISP连接,然后尝试使用。

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

并且此命令将要求您首次确认SSH密钥。比类型Y/Yes

注意:2205:f200:40:401::9ab4:8b43表示您的IPv6。这是IPv6的唯一示例,所以请不要忘记替换您的IPv6。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.