como ssh para um ipv6 ubuntu em uma LAN?

57

Eu sou capaz de executar ping na minha caixa do Ubuntu via comando: (onde c2h2ttt está listado em / 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

E quando eu tento ssh -6 c2h2ttt, mostra:

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

Qual é o comando correto?


No lado do servidor / etc / ssh / sshd_config tem:

ListenAddress ::
ListenAddress 0.0.0.0

Eu era capaz de ssh para c2h2ttt via ipv4 na porta 22. e 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

O ufw é usado e permite qualquer tráfego de entrada na porta 22

root@c2h2think:~# ufw status
Status: active

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

E a configuração do 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
fonte
Pode ser necessário editar seu arquivo sshd.conf e / ou reiniciar o sshd para que ele perceba que há novos endereços v6 para escutar.
Verifique o que netstat -lnt | grep :22(soquetes numéricos tcp | de escuta aberta | contendo: 22) diz.
ephemient
Você fez abrir a porta 22 com ip6tables ... certo?
Ignacio Vazquez-Abrams
Um segundo eu verifico ip6tables
c2h2

Respostas:

89

Tente especificar a interface para o cliente ssh. O utilitário ping6 permite que você especifique uma interface, no entanto, o ssh não possui um comutador para isso, você deve usar esta sintaxe:

ssh -6 fe80 :: 21b: 21ff: fe22: e865% eth1
John T
fonte
2
uau, funciona obrigado! apenas porque o problema eth1
c2h2
2
tentei isso, funcionou para mim também! Por que é preciso especificar a interface?
Max Beikirch
9
@MaxBeikirch porque TODAS as interfaces de rede totalmente operacionais terão um endereço fe80:. Portanto, o sistema não sabe para qual interface enviar o tráfego. Esse é um problema de roteamento de tráfego. Para outros endereços, o sistema geralmente faz escolhas inteligentes porque o computador atribui rotas para endereços "próximos" (significando endereços na mesma sub-rede), mas isso não funciona com o fe80: uma vez que todas as interfaces de rede fazem parte da mesma sub-rede.
TOOGAM 17/08/2015
11
@TOOGAM Como posso especificar o postfix da interface para um host ~/.ssh/config?
PV16
@PVitt: A maneira usual é especificar um identificador do sistema (como um endereço IP) e, em seguida, inserir um sinal de porcentagem e, em seguida, um nome de interface, conforme demonstrado pela resposta que se aplica a% eth1 até o final do IPv6 endereço. eth1 foi o identificador da interface. Se isso não funcionar, verifique a [página de manual do arquivo do OpenSSH chamada config] (man.openbsd.org/cgi-bin/man.cgi?query=ssh_config&sektion=5) e, se isso não ajudar, considere fazer uma nova pergunta (no SuperUser) com detalhes mais precisos para que possamos ajudá-lo ainda mais.
TOOGAM 5/06/16
8

Os endereços locais de link não devem ser usados ​​para SSH, são para coisas de inicialização de protocolo de baixo nível. Se você não possui um prefixo fornecido pelo provedor de serviços de Internet para usar na sua rede, gere um prefixo local exclusivo a partir de fd00 :: / 8:

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

Paulo
fonte
//, como é possível acessar um endereço IPV6 que é roteável na Internet IPv6 global?
Nathan Basanese
@NathanBasanese: Seu ISP tem de lhe fornecer um serviço IPv6 ou configurar um túnel com um dos corretores IPv6, como Hurricane Electric
Radu C
3
Os endereços locais de link são endereços de rede. Se você quiser usá-los para SSH, vá em frente. Apenas saiba como lidar com qualquer complicação, como o que esta pergunta e a resposta de John T. discutem. Eu tive um caso em que um ULA (fd00 :: / 8) não foi atribuído como esperado. Nesse caso, o SSH usando um link-local (fe80 :: / 16) funcionou muito bem. Evito link-local apenas por causa do incômodo de lidar com o roteamento (que precisa especificar uma interface), mas não porque os endereços são tecnicamente menos capazes de enviar ou receber tráfego.
TOOGAM
2

Para conectar o SSH IPv6, você tem mais conectividade do ISP IPv6 no seu computador e, em seguida, tenta.

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

e este comando pedirá pela primeira vez para confirmar a chave SSH. que tipoY/Yes

Nota: 2205:f200:40:401::9ab4:8b43significa seu IPv6. Este único exemplo de IPv6, portanto, não se esqueça de substituir seu IPv6.

Shiv Singh
fonte