Eu gostaria de entender por que essas três regras em sshd_config
se comportam de maneira diferente:
Match host localhost
PasswordAuthentication yes
Match address 127.0.0.1
PasswordAuthentication yes
Match address ::1
PasswordAuthentication yes
Suponha que uma dessas regras esteja configurada na máquina A e também há outra máquina B que pode localmente enviar ssh para A através de um desses três túneis:
A$ ssh B -R2222:localhost:22
A$ ssh B -R2222:127.0.0.1:22
A$ ssh B -R2222:[::1]:22
Para testar na máquina A, eu uso:
A$ ssh localhost
A$ ssh 127.0.0.1
A$ ssh ::1
E para cada configuração de túnel eu testo em B:
B$ ssh -p2222 localhost
B$ ssh -p2222 127.0.0.1
B$ ssh -p2222 ::1
(apenas um túnel está ativo ao mesmo tempo)
Se ele pedir senha, há uma correspondência, caso contrário, não há correspondência. Existem 3 * (3 + 3 * 3) = 36 testes. Para cada 3 regras de Match diferentes existem 3 testes em A e 3 testes em B para cada 3 túneis diferentes. Aka 12 testes para cada regra.
Resultados:
Para Match host localhost
, há 12/12 correspondências (sempre pede senha).
Para Match address 127.0.0.1
, há 4/12 correspondências: 1/3 para a máquina A com A$ ssh 127.0.0.1
e 3/3 partidas para a máquina B quando o encapsulamento é definido por A$ ssh B -R2222:127.0.0.1:22
Para Match address ::1
há 8/12 correspondências, também conhecido como 4 falha: 1/3 falha para A com A$ ssh 127.0.0.1
e 3/3 falha para B quando o encapsulamento é definido por A$ ssh B -R2222:127.0.0.1:22
Obviamente, com a regra Match address 127.0.0.1,::1
, todas as combinações serão correspondidas.
No entanto, não entendo como isso funciona, especialmente porque o endereço localhost
é correspondido pela regra ::1
e não pela regra 127.0.0.1
, e por que o endereço 127.0.0.1
(resp. ::1
) pode ser correspondido pela regra ::1
(resp. 127.0.0.1
) apenas remotamente e não localmente?
Tags ssh ipv6 localhost ssh-tunnel