.ssh / config ProxyCommand com uma porta variável

5

No ambiente em que trabalho, usamos túneis para SSH em vários servidores. Por exemplo, eu vou 'ssh -p XXXXX username @ localhost' para acessar o servidor.

Se a porta fosse sempre a mesma, eu poderia fazer isso e estaria pronto:

Host somehost
  User bryan
  Hostname localhost
  Port 12345
  ProxyCommand ssh -p 2218 [email protected] -W %h:%p

No entanto, a porta usada pode e mudará se o túnel cair e voltar. Isso não é algo que eu tenho a capacidade de mudar - é construído na infra-estrutura. Então, eu escrevi um programa para encontrar a porta atual. Mas também não sei como:

a) Execute esse programa e use a saída para a variável% p; ou b) Execute uma tarefa cron em first.server.com para escrever um arquivo de texto com a porta ou definir uma variável de ambiente, ou algo assim.

Com efeito, quero fazer isso. É possível?

Host somehost
  User bryan
  Hostname localhost
  Port 'sh get_port_for_somehost.sh'
  ProxyCommand ssh -p 2218 [email protected] -W %h:%p

A única coisa que posso pensar agora é rodar um programa no meu laptop que reescreve o meu .ssh / config depois de ir e consultar o que as portas atualmente são, mas eu prefiro não fazer isso.

    
por Bryan 26.10.2017 / 20:13

1 resposta

2

Não é possível escrever um script no arquivo de configuração para extrair uma variável para o número da porta.

Mas você pode escrever uma função bash para obter a porta para você e colocá-la no local correto. Por exemplo, coloque o seguinte no ~/.bashrc :

function ssh-dynamic() {
  PORT='sh get_port_for_somehost.sh'
  exec ssh -p "$PORT" somehost "$@"
}

onde a outra configuração pode permanecer no ~/.ssh/config .

    
por 26.10.2017 / 20:42