Existe uma maneira simples de recuperar o IP de um HostName
de uma configuração ssh na linha de comando? Muitas vezes tenho que usar scp
e gostaria de me conectar a uma máquina, mas lembro apenas do HostName.
Existe uma maneira simples de recuperar o IP de um HostName
de uma configuração ssh na linha de comando? Muitas vezes tenho que usar scp
e gostaria de me conectar a uma máquina, mas lembro apenas do HostName.
Respostas:
O scp lerá o seu ~/.ssh/config
e /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/
Mapear do host
argumento fornecido na linha de comando para a hostname
entrada 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 }')
Não é necessário fazer issoscp
, mas você pode usar ssh
os rastreamentos de depuração.
ssh -v HostName ' ' 2>&1 | grep '^debug1: Connecting to'
Normalmente, você pode fazer host HostName
e obterá o endereço IP.
Se host
não estiver instalado (deve ser), você pode nslookup HostName 8.8.8.8
usar 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).
~/.ssh/config
, o que eu entendo ser o ponto desta pergunta.
HostName
é um alias arbitrário, não um nome de domínio.
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
.ssh/config
e/etc/ssh/ssh_config
. existe uma razão para você não poder scp pelos aliases definidos na configuração?