SSH Tunnel para Samba sobre SSH Proxy

2

Então, estou tentando fazer algo que é relativamente simplesmente em teoria, mas meu caso de uso parece ser difícil de encontrar, já que a maioria proxying que encontro na internet é no que diz respeito à criação de um proxy para o seu navegador através de um túnel SSH.

O que eu gostaria de fazer é configurar uma unidade mapeada no meu Mac que aponte para uma caixa de linux para a qual tenho acesso SSH. Eu encontrei alguns recursos úteis on-line, incluindo este , em que o autor recomenda algo como:

sudo ifconfig lo0 127.0.0.2 alias up
sudo ssh -NL 127.0.0.2:139:localhost:139 \
         -NL 127.0.0.2:445:localhost:445 \
         user@ssh-host

Pelo que entendi, isso parece bem ... No entanto, minha configuração é apenas um pouco mais complicada. Isso pressupõe que você tenha acesso SSH direto à caixa. Minha situação é tal que eu me conecto à minha máquina através de outra máquina. Então, meu ~ / .ssh / config parece com o seguinte:

Host *.dev
  User jmurray
  IdentityFile ~/.ssh/my_dev_identity_file
  ProxyCommand ssh -A proxy_box nc %h %p

Então, quando eu ssh em jmurray.dev (a caixa do taget linux), eu serei direcionado através do servidor proxy_box . Eu devo mencionar que esta configuração de rede está fora do meu controle, então por favor não sugira mudanças na configuração da rede em si.

Assim, a partir do tutorial mencionado acima, o primeiro comando funciona bem (claro), mas o segundo comando de:

sudo ssh -NL 127.0.0.2:139:localhost:139 \
         -NL 127.0.0.2:445:localhost:445 \
         [email protected]

erros com:

sh: Could not resolve hostname jmurray.dev: nodename nor servname provided, or not known

Então, estou assumindo apenas aqui que ele não está lendo meu arquivo de configuração quando faço essa solicitação. Então, eu decido que vou alimentar minhas configurações através da linha de comando com a versão ligeiramente modificada:

sudo ssh -NL 127.0.0.2:139:localhost:139 \
         -NL 127.0.0.2:445:localhost:445 \
         [email protected] \
         -o 'User jmurray' \
         -o 'IdentityFile ~/.ssh/my_dev_identity_file' \
         -o 'ProxyCommand ssh -A proxy_box nc %h %p'

mas depois recebo um erro separado de:

Permission denied (publickey,gssapi-with-mic).
ssh_exchange_identification: Connection closed by remote host

Então ... Aqui é onde eu fico preso. Eu sinto que isso deveria ser possível. Se eu puder enviar ssh para a caixa no comando once da minha máquina local, então eu sinto que deve ser possível configurar o meu túnel em um comando da minha máquina local. E como o proxy_box é uma máquina compartilhada, eu realmente gostaria de ficar longe de qualquer solução que me obrigasse a agir como root nessa caixa.

Agradecemos antecipadamente por qualquer ajuda !! É muito apreciado!

    
por John 15.02.2013 / 06:08

1 resposta

2

Executar ssh com sudo significa que você está executando como root, por isso não está usando seu .ssh / config, mas root.

Execute sua conexão ssh em uma porta não privilegiada enquanto executa uma conexão adicional de proxy SSH com localhost para encaminhar as portas privilegiadas.

Ok, então, por exemplo, além de fazer o seu SSH normal:

ssh -NL 127.0.0.2:10139:localhost:139 \
    -NL 127.0.0.2:10445:localhost:445 \
     user@ssh-host

você também executa este ssh local:

sudo ssh -NL 127.0.0.2:139:127.0.0.2:10139 \
         -NL 127.0.0.2:445:127.0.0.2:10445 \
         $USER@localhost

Assim, você evita a ligação às portas privilegiadas 139 e 445 em sua conexão SSH real e só as vincula em uma conexão local com sua própria máquina.

No entanto, tudo isso parece um pouco de esforço apenas para acessar os arquivos, deve haver uma boa escolha de implementações SSHFS / SFTP disponíveis para Mac.

    
por 15.02.2013 / 07:30