Evitar trapping por ssh ProxyCommand

1

Eu tenho as seguintes linhas no meu .ssh/config :

Host localhost
ProxyCommand none
Host n0*
ProxyCommand none

Host *
ProxyCommand corkscrew proxy.m.com 80 myserv 443 ~/.ssh/auth

i.e. para localhost e n0* ssh não usará o proxy, mas para outros hosts será.

Eu sou preso várias vezes quando queria me conectar a outras máquinas locais , mas não conseguia me conectar porque o proxy estava ativo. Não houve exceção para eles em ~/.ssh/config .

Existe algum eco para uma informação na linha de comando, quando o proxy é usado? por exemplo.

$ ssh otherpc
  ---> using  ProxyCommand corkscrew proxy.m.com 80 myserv 443 ~/.ssh/auth
Password: 

Eu sei que ssh -v está listando esta linha (junto com muitos outros):

debug1: Executing proxy command: exec corkscrew proxy.m.com 80 myserv 443 ~/.ssh/auth                                                                                                                                        

Existe uma maneira menos detalhada de exibir o comando de proxy usado, ajudando-me a evitar ficar preso? Talvez um alias bash inteligente / função grepping ssh -v ?

Aviso: Não escreva ssh() { ssh -v | grep Proxy} . Eu tentei isso também ... e acidentalmente garfo bombardeou mim: P

    
por Sebastian 04.09.2014 / 11:57

1 resposta

2

Sugiro que você escreva um pequeno wrapper corkscrew-wrapper contendo algo como:

#!/bin/sh
echo "Executing proxy command corkscrew ..." > /dev/tty
exec corkscrew "$@"

e use corkscrew-wrapper em vez de corkscrew na linha ProxyCommand.

Se você quiser dar suporte à execução por at ou cron, o seguinte deverá funcionar:

#!/bin/sh

cmd() { echo "Executing proxy command corkscrew ..."; }

{ cmd > /dev/tty; } 2> /dev/null
[ $? -eq 0 ] || cmd >&2

exec corkscrew "$@"

Nota: não detecte a disponibilidade de /dev/tty com o comando tty porque o terminal não está necessariamente conectado à entrada padrão.

    
por 04.09.2014 / 12:04

Tags