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.