Regra de endereço de correspondência em sshd_config, diferença entre localhost, 127.0.0.1 e [:: 1]

1

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?

    
por hello world 15.06.2018 / 02:05

0 respostas