usando o comando proxy ssh baseado na rede atual

2

Eu quero ter acesso à minha máquina doméstica a partir do meu laptop, seja em casa ou no escritório. No escritório, tenho que usar um gateway. Para isso, adicionei uma entrada proxycommand no meu .ssh/config , que funciona bem no escritório. No entanto, se eu quiser usar isso em casa, não quero depender do gateway do escritório. Existe uma maneira de automatizar isso?

    
por Yotam 15.10.2013 / 21:45

1 resposta

3

Sim e não.

Primeiro, o não. Não há nada que você possa colocar em seu arquivo ~ / .ssh / config, o que tornará diferentes configurações ativas com base em fatores externos, como a rede em que você está ou se um arquivo existe, etc. O arquivo de configuração do SSH é um arquivo estático. >

Agora o sim. Você pode "hackear" algo. Provavelmente não será incrivelmente bonito, mas pode funcionar.

Considere como o ProxyCommand funciona. Ele executa uma linha de comando e substitui em determinadas cadeias o estilo printf. Essa linha de comando é onde você pode colocar seu login. Por exemplo, você pode ter algo assim em seu laptop para usar no escritório:

host athome
    ProxyCommand ssh -x -a -q gateway nc athome.dyndns.org 22

O comando inicia um comando ssh que se conecta a gateway e nesse servidor lança netcat para se conectar ao seu destino atual . Bem, em vez de executar o ssh, você pode usar um script de shell. Por exemplo, com isso no seu arquivo .ssh/config :

host athome
    ProxyCommand bin/customconnect athome.dyndns.org

Você pode criar um script ~/bin/customconnect :

#!/bin/sh

if /sbin/ifconfig -a | grep -q 'inet 192\.168\.'; then
        nc $1 22
else
        ssh -x -a -q gateway nc $1 22
fi

Em seguida, supondo que sua rede em casa comece com 192.168 e sua rede no escritório não, o ProxyCommand apropriado será selecionado pelo script .

Se você quiser outras funcionalidades dinâmicas, como a seleção de um nome de host diferente baseado na rede, você pode obviamente adicionar isso ao script também.

Note que esta solução não é sem algum custo. Normalmente, o SSH inicia seu ProxyCommand diretamente. Se você usar essa solução, haverá um processo extra em execução para cada conexão, já que o ssh inicia um shell, que por sua vez inicia outro processo.

    
por 17.10.2014 / 16:41

Tags