ssh via ambiente

0

Eu tenho um laptop, que uso no trabalho e em casa.

Quando estou no trabalho, posso ssh diretamente para qualquer servidor que eu goste.

Quando estou em casa, tenho que passar por um jumphost para entrar na rede.

Eu tenho algumas entradas como:

Host jump-server
  hostname server1
  proxyjump workproxy

mas eu tenho um monte de servidores, e alguns scripts que eu uso que ssh para hosts específicos também (o que significa que todos eles precisam de opções de linha de comando para especificar o uso de jumphost ou não).

Existe uma maneira de automatizar isso? Por exemplo, posso definir uma opção de ambiente para que todos os hosts (exceto o workproxy) sejam proxyjump?

    
por AMADANON Inc. 04.10.2018 / 00:06

2 respostas

1

Esta não é uma resposta específica, mas você pode obter algumas idéias em wikibooks "Cookbook on Proxies e Jump Hosts ".

Se você usar Host * e ProxyCommand com %h como o host, poderá gravar uma regra genérica. E Match pode funcionar como Host , mas permite a você exec um comando que pode ajudar a reduzir o * para corresponder apenas aos nomes que você deseja.

    
por 09.10.2018 / 07:56
1

Isso pode ser feito com ProxyCommand em vez de ProxyJump . ProxyCommand aqui poderia ser um script de shell que verifica alguma variável e executa comandos diferentes. Por exemplo, você pode ter um script /some/proxy como:

#! /bin/sh

if [ -n "$WORK" ] && [ "$1" != workproxy ]
then
    echo Work >&2
    ssh -qW "$1:$2" workproxy
else
    nc "$1" "$2"
fi

E configuração SSH:

Host *
    ProxyCommand /some/proxy %h %p

Isso verifica se a variável de ambiente WORK não está vazia e o host não é workproxy e se conecta ao workproxy. Caso contrário, ele usa o netcat para se conectar ao host e à porta (efetivamente, uma conexão direta).

    
por 09.10.2018 / 08:52

Tags