Porta de correspondência do host de configuração SSH

3

Eu tenho um servidor que tem vários "daemons SSH" em execução (na verdade, Stash e OpenSSH), com diferentes chaves SSH necessárias para cada um. Esses daemons estão ouvindo em duas portas diferentes.

Na configuração do SSH nos clientes (especificamente ~/.ssh/config ), é possível especificar a porta na diretiva Host / Match (ou de outra forma), para que eu possa substituir o IdentityFile com base na porta? Dessa forma, ssh myserver -p 22 e ssh myserver -p 23 farão o login usando as chaves corretas, sem configuração adicional.

    
por Ricky Cook 12.11.2014 / 02:34

2 respostas

9

Se o seu cliente ssh for novo o suficiente, você pode usar a palavra-chave Match do arquivo de configuração para ter uma configuração condicional baseada na porta de destino.

Match host somehost exec "test %p = 42"
IdentityFile ...

O exemplo acima só aplica a linha "IdentityFile" se o host de destino for "somehost" e a porta de destino for 42. Match funciona como Host em que as linhas que o seguem (até a próxima Correspondência ou Host line) aplicam-se apenas a sessões que correspondam aos critérios. No exemplo, a linha Match verifica se o host é "somehost" e também executa um comando externo que é considerado correspondente se o comando sair com status 0.

O comando que está sendo executado aqui é test %p = 42 . "% p" será substituído pelo valor de porta que o ssh usaria até aquele ponto (seja o padrão de 22 ou o valor da linha de comando). test também é conhecido como [ ; é um utilitário de linha de comando usado principalmente em scripts de shell como parte de uma instrução if . Aqui, test está sendo usado para testar se o número da porta é 42.

A palavra-chave Match ssh_config foi adicionada ao OpenSSH na versão 6.5 ou 6.6. Verifique sua página ssh_config man para ver se ela está disponível em seu sistema.

    
por 29.01.2015 / 04:39
3

Você pode criar "aliases" de host de tipos no arquivo ~/.ssh/config que se referem a daemons SSH em portas diferentes do mesmo servidor. Por exemplo:

Host daemon1
HostName host.domain.com
Port 22
IdentityFile ~/.ssh/id_rsa_daemon1

Host daemon2
HostName host.domain.com
Port 23
IdentityFile ~/.ssh/id_rsa_daemon2

Em seguida, você pode executar ssh daemon1 ou ssh daemon2 para efetuar login em um daemon SSH específico.

    
por 12.11.2014 / 05:53