como descobrir o ip de um hostsh ssh

10

Existe uma maneira simples de recuperar o IP de um HostNamede uma configuração ssh na linha de comando? Muitas vezes tenho que usar scpe gostaria de me conectar a uma máquina, mas lembro apenas do HostName.

m33lky
fonte
1
O scp lerá o seu .ssh/confige /etc/ssh/ssh_config. existe uma razão para você não poder scp pelos aliases definidos na configuração?
Tim Kennedy
Você deve adicionar isso como resposta. Acho que quando tentei primeiro, não forneci a chave ou algo assim, por isso não reconheci o host.
M33lky
parecia um pouco de luz para uma resposta, mas eu adicionei. juntamente com o que considero ser uma leitura interessante relacionada à configuração do ssh.
Tim Kennedy

Respostas:

2

O scp lerá o seu ~/.ssh/confige /etc/ssh/ssh_config. contanto que você scp para / do nome de um dos aliases de host na sua configuração ssh, ele deve funcionar.

como isso parece meio curto para ser uma resposta, aqui estão mais algumas informações sobre o que você pode fazer com a sua configuração ssh ...

Aqui está uma publicação que descreve alguns dos recursos avançados do arquivo de configuração ssh: http://magazine.redhat.com/2007/11/27/advanced-ssh-configuration-and-tunneling-we-dont-need-no- stinking-vpn-software /

Precisa encapsular o ssh / scp através de um proxy http? não tem problema, basta seguir as etapas descritas aqui: http://www.mtu.net/~engstrom/ssh-proxy.php

Outro uso da opção ProxyCommand: http://jasonmc.wordpress.com/2008/04/16/ssh-magic/

Tim Kennedy
fonte
1
Respostas curtas e objetivas são ótimas. Caso contrário, é fácil sair do tópico. Qualquer pessoa que faça tunelamento deve dar uma olhada no sshuttle .
M33lky
9

Mapear do hostargumento fornecido na linha de comando para a hostnameentrada ssh_config é fácil de usar ssh.

Você pode pedir para avaliar e imprimir o que seria usado para a configuração de uma linha de comando, sem realmente conectar. Em seguida, basta retirar o que está listado hostname(observe que ele canoniza os nomes das chaves de configuração convertendo-os para minúsculas). Um exemplo simples é:

ssh -G database | awk '/^hostname / { print $2 }'

Se .ssh / config contiver:

Host database
Hostname database.example.com

Isso será impresso database.example.com.

Para fazer o ping, é claro que você pode avaliar a saída e usá-la como argumento:

ping $(ssh -G database | awk '/^hostname / { print $2 }')
Lloyd Pique
fonte
2
essas são as coisas. Ótima resposta!
heisian 22/09/16
1

Normalmente, você pode fazer host HostNamee obterá o endereço IP.

Se hostnão estiver instalado (deve ser), você pode nslookup HostName 8.8.8.8usar os servidores DNS do Google para fazer a pesquisa.

Para fazer isso, o resolvedor da sua máquina precisa ter uma configuração correta (no arquivo /etc/resolv.conf e talvez /etc/nsswitch.conf) ou você precisa usar um "nome de domínio totalmente qualificado", completo com o host, domaiin e "TLD" (.org, .com, .net esse tipo de sufixo).

Bruce Ediger
fonte
3
Isso não procura aliases de host ~/.ssh/config, o que eu entendo ser o ponto desta pergunta.
Gilles 'SO- stop be evil'
Haha, eu também notei isso. ssh's HostNameé um alias arbitrário, não um nome de domínio.
M33lky
Comentários não são para discussão prolongada; esta conversa foi movida para o bate-papo .
terdon
0

use um ProxyCommand falso ...

$ ssh -o 'ProxyCommand echo %h>&2' mYaLiAs 2>&1 | fgrep -v ssh_exchange_id |  read actual
$ echo $actual
192.168.1.234
user102331
fonte