как SSH к Ubuntu IPv6 в локальной сети?

57

Я могу пропинговать свой ящик 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

Я был в состоянии ssh к c2h2ttt через ipv4 на порту 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  
C2H2
источник
Возможно, вам придется отредактировать файл sshd.conf и / или перезапустить sshd, чтобы он понял, что есть новые адреса v6 для прослушивания.
Проверьте, что netstat -lnt | grep :22(откройте прослушивание числовых сокетов tcp |, содержащих: 22) говорит.
Эфимент
Вы сделали открытый порт 22 с ip6tables ... право?
Игнасио Васкес-Абрамс
Одну секунду я проверяю ip6tables
c2h2

Ответы:

89

Попробуйте указать интерфейс для клиента ssh. Утилита ping6 позволяет вам указать интерфейс, однако ssh не имеет переключателя для этого, вы должны использовать этот синтаксис:

ssh -6 fe80 :: 21b: 21ff: fe22: e865% eth1
Джон Т
источник
2
вау, работает, спасибо! только потому, что проблема eth1
c2h2
2
попробовал, у меня тоже работает! Почему нужно указать интерфейс?
Макс Бейкирх
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, они для низкоуровневой загрузки протокола. Если у вас нет префикса, предоставляемого провайдером для использования в вашей сети, вместо этого сгенерируйте уникальный локальный префикс из fd00 :: / 8:

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

Павел
источник
// Как получить доступ к адресу IPV6, который является маршрутизируемым в глобальном Интернете IPv6?
Натан Басанезе
@NathanBasanese: Ваш интернет-провайдер должен предоставить вам услугу IPv6, или вы настроили туннель с одним из брокеров IPv6, например, с Hurricane Electric
Radu C
3
Связанные локальные адреса являются сетевыми адресами. Если вы хотите использовать их для SSH, продолжайте. Просто знайте, как справиться с любыми сложностями, например, с тем, что обсуждают этот вопрос и ответ Джона Т. У меня был случай, когда ULA (fd00 :: / 8) не был назначен, как ожидалось. В этом случае SSH с использованием link-local (fe80 :: / 16) работал отлично. Я избегаю локальной ссылки только из-за проблем с маршрутизацией (необходимо указать интерфейс), но не потому, что адреса технически менее способны отправлять или получать трафик.
TOOGAM
2

Для подключения по SSH IPv6 у вас больше всего есть возможность подключиться к вашему провайдеру по протоколу IPv6.

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

и эта команда сначала попросит подтвердить ключ SSH. чем типY/Yes

Примечание: 2205:f200:40:401::9ab4:8b43имею ввиду Ваш IPv6. Это единственный пример IPv6, поэтому не забудьте заменить вас IPv6.

Шив Сингх
источник