OpenSSH - mapeia aliases em ~ / .ssh / config para endereços IP na linha de comando

9

É possível consultar ~ / .ssh / config na linha de comando? Digamos que eu gostaria de recuperar para qual endereço IP esse apelido específico aponta em um programa separado, é possível?

user1042840
fonte

Respostas:

2

Se eu entender que você quer apenas o endereço IP retornado, ie., 192.168.1.1, então esta é uma maneira (incrivelmente frágil) de consultar o arquivo a partir da linha de comando, desde que você tenha as permissões apropriadas para lê-lo e seu .ssh/configé consistentemente formatado:

awk '/Host $youralias/ {getline; print $2}' .ssh/config


Só estou publicando isso como gostaria de entender como usar awkisso, mas meu conhecimento é, obviamente, bastante limitado.

jasonwryan
fonte
1

Não tenho muita certeza do que você está perguntando ...

Digamos que você tenha um alias SSH para 'mainserver' para poder fazer isso ssh mainserver. Se você deseja que ele também funcione ping mainserver, é necessário inserir um alias /etc/hosts, da seguinte forma:

/ etc / hosts:

192.168.0.1 comp-one
192.168.0.2 comp-two

192.168.0.20 mainserver

Então você poderia fazer ping mainservere executaria o ping 192.168.0.20.

BenjiWiebe
fonte
0

Esta é uma maneira um pouco mais robusto de recuperação da HostNamebase em Hostno .ssh/configarquivo.

sshalias()
{
    awk "\$1==\"Host\" {host=\$2} \$1==\"HostName\" && host==\"$1\" {print \$2}" "$HOME/.ssh/config"
}
Andrzej Pronobis
fonte
-1

O arquivo que você menciona é um arquivo de texto, contém nomes de host e possivelmente endereços IP para identificar as máquinas às quais você se conecta. Os nomes de host podem ser resolvidos para endereços IP usando o host(1)comando O formato é bastante simples, portanto, não é muito difícil descobrir o que está lá. Observe que curingas podem ser usados ​​no arquivo (estados da mina *.fedoraproject.org).

vonbrand
fonte