Túnel de uma conexão SSH de forma transparente (sem ProxyCommand)

1

Aqui está o cenário: o usuário executa "ssh -i sshkey user @ server1". Eu quero que a conexão SSH seja tunelada através de server1 para server2. Normalmente, o usuário poderia fazer isso usando:

ssh -i sshkey user@server1 -o 'ProxyCommand /bin/nc server2 22'

No entanto, eu não quero que o usuário configure o proxy, usando argumentos de linha de comando ssh ou até mesmo alterações ssh_config. Como sysadmin, eu quero ser capaz de redirecionar a sessão SSH de um usuário para um servidor diferente de forma transparente. Todas as soluções que encontrei até agora exigem o ProxyCommand. Existe uma maneira de eu conseguir isso?

Observe que o usuário está usando chaves SSH, e não nome de usuário / senha, para que essas credenciais precisem ser passadas para o servidor2.

    
por Matt White 15.08.2012 / 23:03

2 respostas

0

Posso pensar em duas maneiras de fazer isso:

Comando forçado no usuário AuthorizedKeysFile (ou seja, ~/.ssh/authorzied_keys ) no servidor1:

A entrada seria semelhante a

command="ssh server2" ssh-rsa AAAA...[rest of sshkey.pub]

Em seguida, o comando ssh -i sshkey server1 enviará o usuário diretamente para o server2.

Ou, altere o shell dos usuários no server1 configurando-o para algo como /bin/proxyshell , cujo conteúdo será:

#!/bin/bash
ssh server2
    
por 15.08.2012 / 23:22
0

Suspeito que a pergunta contenha um mal-entendido sobre o uso do ProxyCommand do SSH.

O ProxyCommand não pode ser usado para conectar-se ao servidor2 via servidor1, mas para se conectar ao servidor1 através do comando fornecido (o que pode envolver o servidor2, por exemplo, como um proxy). Esse comando precisará da sua própria maneira de se autenticar no servidor2 (veja, por exemplo, link para várias opções de autenticação em um proxy da Web).
Se o ProxyCommand conseguir se conectar ao servidor1, o usuário será autenticado da maneira usual.

    
por 11.03.2013 / 17:37