
no arquivo .ssh/config
O cenário é que agora tenho dois ips públicos (dinâmicos), um está conectado ao aws e o outro está conectado ao rackspace
Ambos requerem chaves pem diferentes para se conectar. Mas quero usar o arquivo de configuração ssh para economizar meu tempo
Host <ip1>
User root
Port 22
HostName %h
IdentityFile ~/.ssh/aws.pem
Host <ip2>
User root
Port 22
HostName %h
IdentityFile ~/.ssh/rackspace.pem
A partir dessa configuração, não consigo distinguir qual arquivo pem deve ser usado. Quero usar o Host como parte do parâmetro para especificar a qual servidor conectar, por exemplo, ssh aws-ip1 ssh rack-ip2
então o arquivo de configuração pode distinguir qual arquivo pem usar
Alguém sabe como fazer isto?
Responder1
Ok... Essa pergunta é muito antiga. No entanto, posso pensar em uma maneira que ajudará nesse tipo de cenário. Usando parâmetros curinga(*) e %h aqui.
Vamos supor que o IP da Amazon seja 10.10.20.* e o IP da Rackspace seja 20.20.10.*. A seguinte configuração ajudará:
Host 10.10.20.*
Hostname %h
User root
IdentityFile ~/.ssh/aws.pem
Host 20.20.10.*
Hostname %h
User root
IdentityFile ~/.ssh/rackspace.pem
E então ligar, digamos, ssh 10.10.20.5
chamará algo como , que é o que pode ser necessário.ssh -i ~/.ssh/aws.pem [email protected]
Responder2
A parte 'Host' é uma espécie de 'atalho' que você pode usar:
Host aws-ip1
HostName ip-or-name-to-ip1
IdentityFile ~/.ssh/aws.pem
Host rack-ip2
HostName ip-or-name-to-ip2
IdentityFile ~/.ssh/rackspace.pem
e então você apenas usa ssh aws-ip1
ou ssh rack-ip2
...
Para citar man ssh-config
:
Host Restricts the following declarations (up to the next Host key-
word) to be only for those hosts that match one of the patterns
given after the keyword.
Responder3
Outra opção é usar aliases de shell simples e antigos:
alias ssh_rack="ssh -i .ssh/rackspace.pem"
alias ssh_aws="ssh -i .ssh/aws.pem"
e então use-os em vez de ssh
.