Как заставить scp использовать ipv6-адреса?

26

Когда я пытаюсь использовать scp через адреса IPv6, я получаю это:

scp -6 osis@::1:/home/osis/test.file ./test.file
ssh: Could not resolve hostname : Name or service not known

С scp все, что я когда-либо получаю,

ssh: Could not resolve hostname : Name or service not known

используя это, я получаю логин в мой ящик без помех

ssh osis@::1
Озис
источник

Ответы:

42

scpтребует некоторого специального синтаксиса. Адрес IPv6 должен быть заключен в квадратные скобки, которые затем должны быть экранированы. Так что в вашем примере это будет выглядеть так:

scp -6 osis@\[2001:db8:0:1\]:/home/osis/test.file ./test.file

В противном случае первое двоеточие ':' считается разделителем между частями файла и адреса, что приведет к

ssh: Could not resolve hostname 2001: Address family for hostname not supported

В вашем примере с ip ::1это интерпретируется как если вы хотите ssh к хосту ''(пусто).

Мартин Оуэнс -доктормо-
источник
спасибо за ваш ответ, эта информация почему-то отсутствовала в man scp; man ssh
Osis
2
Подумайте о том, чтобы отправить обновленную страницу руководства, тогда вы можете сказать: я помог.
Мартин Оуэнс -доктормо-
2
При использовании флага -6 вы можете просто ввести localhost вместо :: 1 (который является IPv6-адресом для localhost), чтобы избежать скобок и, следовательно, любой необходимости экранировать что-то в оболочке:scp -6 osis@localhost:/home/osis/test.file ./test.file
freddyb
1
Вы не должны использовать IPv6-адреса, вы должны использовать DNS-имена.
Андерс
0

Вышеприведенная команда не работает для меня, ошибка, которую я получил, была вызвана тем, что адрес v6 был разрешен для пути.

Не нужно использовать обратную косую черту "\". В соответствии с приведенным выше примером команда будет работать.

scp -6 osis@[2001:db8:0:1]:/home/osis/test.file ./test.file
Jobz
источник