O túnel SSH remoto não funciona com certificados

3

Eu preciso de redirecionamento de porta reversa via SSH para o meu servidor, de modo que no servidor eu possa se conectar a uma porta localhost, que então é encaminhada usando o túnel SSH para o meu servidor local.

Meu sistema local é o Windows, o sistema remoto Linux. Ao abrir o túnel usando plink com autenticação de senha padrão, funciona muito bem:

>plink.exe -R *:62050:127.0.0.1:9000 [email protected]

O resultado na máquina remota parece ser bom e o encaminhamento também funciona bem.

[user@host ~]$ netstat -an | grep 62050
tcp        0      0 127.0.0.1:62050             0.0.0.0:*                   LISTEN
tcp        0      0 ::1:62050                   :::*                        LISTEN

No entanto, quero usar isso como um comando de pré-depuração no meu IDE para estabelecer o túnel, portanto, quero usar minha chave privada:

>plink.exe -R *:62050:127.0.0.1:9000 [email protected] -i C:\Users\abcdefg\.ssh\id_my.ppk

O Connection também funciona muito bem, não me pedem senha e a conexão é bem-sucedida. No entanto, não há porta aberta:

[user@host ~]$ netstat -an | grep 62050

apenas retorna um resultado vazio. Eu posso fazer as mesmas observações ao usar a interface gráfica putty. O tunelamento remoto funciona como um charme usando a senha simples auth, assim que eu introduzo um arquivo de chave privada, a conexão é estabelecida, mas o túnel reverso não é.

Como posso resolver isso?

    
por waza-ari 19.02.2014 / 21:41

1 resposta

1

A opção -v fornece mais informações sobre o lado do cliente.

plink.exe -v -R *:62050:127.0.0.1:9000 user@host -i ./np.ppk
Looking up host "host"
Connecting to 135.x.x.x port 22
Server version: SSH-2.0-OpenSSH_5.1
Using SSH protocol version 2
We claim version: SSH-2.0-PuTTY_Release_0.63
...
Opened main channel
Requesting remote port *:62050 forward to 127.0.0.1:9000
Remote port forwarding from *:62050 enabled              <---<<<
Allocated pty (ospeed 38400bps, ispeed 38400bps)
Started a shell/command
...

Se você não conseguiu encontrar a resposta com o modo plink verbose. Abra sshd no modo de depuração em outra porta (ou peça ao administrador raiz para fazer isso). Não há necessidade de parar o deamon sshd regular.

# /usr/sbin/sshd -dd -p  2222
debug2: load_server_config: filename /opt/ssh/etc/sshd_config
debug2: load_server_config: done config len = 514
debug2: parse_server_config: config /opt/ssh/etc/sshd_config len 514
debug1: Config token is port
debug1: Config token is protocol
debug1: Config token is hostkey
debug1: Config token is hostkey
....

Em seguida, conecte-se a essa instância do sshd com a opção plink -P

plink.exe -v -P 2222 -R *:62050:127.0.0.1:9000 user@host -i ./np.ppk

Você terá as informações de depuração de ambas as extremidades.

EDITAR

A solução está em man sshd no capítulo "AUTHORIZED_KEYS FILE FORMAT".

É provável que a opção sem encaminhamento de porta tenha sido associada à sua chave, mas que nenhuma opção global tenha sido definida.

 no-port-forwarding
         Forbids TCP forwarding when this key is used for authentication.  Any port forward requests by the client will return
         an error.  This might be used, e.g. in connection with the command option.

Você deve ter acesso a sua casa ~/.ssh/authorized_keys , editar o arquivo e remover essa opção.

Às vezes, as authorized_keys são centralizadas em um diretório protegido. Nesse caso, você não poderá alterá-las.

    
por 20.02.2014 / 17:50