як ssh на ipv6 ubuntu в локальній мережі?


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  

Вам може знадобитися відредагувати файл 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-адресу), а потім позначити знак відсотка, а потім ім'я інтерфейсу, як показано у відповіді, яка позначила% et1 до кінця IPv6 адреса. eth1 був ідентифікатором інтерфейсу. Якщо це не працює, перевірте [man сторінку для файлу 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, що використовує локальний зв'язок (fe80 :: / 16), спрацював чудово. Я уникаю локальних посилань лише через клопоти в роботі з маршрутизацією (потрібно вказати інтерфейс), але не тому, що адреси технічно менш здатні пересилати або отримувати трафік.
TOOGAM

2

Для підключення SSH IPv6 у вас на комп’ютері найбільше підключення ISP до IPv6, а потім спробуйте як.

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

і ця команда вперше попросить підтвердити ключ SSH. ніж типY/Yes

Примітка: 2205:f200:40:401::9ab4:8b43означає ваш IPv6. Це єдиний приклад IPv6, тому не забудьте замінити вас IPv6.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.