Inicia automaticamente uma conexão SSH de saída em um servidor quando um cliente se conecta

0

Como posso iniciar automaticamente uma conexão SSH de saída em um servidor quando um cliente interno se conecta a esse servidor em uma porta específica, para qualquer serviço determinado, de um determinado intervalo de IP? Observe que a conexão não deve iniciar se já estiver ativa.

Não parece haver uma maneira não-script para fazer isso, como se a conexão já estivesse ativa, não haveria nenhuma maneira de detectar isso usando o método Match e ForceCommand para evitar que o ssh tentasse reconectar (ou abrir desnecessariamente uma sessão ssh de saída inteiramente nova).

Por isso, pensei em um roteiro como (isso é apenas um rascunho, para ilustrar a ideia):

#######auto_ssh-script.sh

####### iptables rule logging all new incoming, unestablished, never before seen connections

iptables -I INPUT -p tcp --sport 22 -m state --state NEW -m state !
--state ESTABLISHED -m state ! --state SEEN_REPLY -j LOG --log-prefix CONNECT

#######background script  --> read log and look for a match to string CONNECT 

cat /proc/kmsg | while read LOGGING 
do   
    LOG='echo "$LOGGING" | grep 'CONNECT' '   
    if ["$LOG" = ' ' ]  &  UP= 'echo alxw | grep ssh '
     if [ "UP" = ' '] then 
     fi  

ssh -p 22 <user>@<somewhere-out-there.com
echo "Connected"
done

Não há uma maneira melhor? Se não, como posso melhorar este script?

    
por Yokozuna Versus E. Honda 16.10.2015 / 22:56

1 resposta

3

Basicamente, você pode criar algo assim em seu sshd_config :

Match User user Address 192.168.100.0/24 LocalPort 22
  ForceCommand ssh some-other-ip

Você não precisa de LocalPort 22 , se tiver serviço em execução apenas na porta normal. O intervalo de IP do cliente é 192.168.100.1 - 192.168.100.254 e o nome de usuário é user .

    
por 16.10.2015 / 23:19

Tags