Passo 1
Verifique se o seu agente local está pronto
Só porque você pode ssh no servidor bastião sem especificar o caminho da chave ou ser solicitada a senha, não significa que o seu agente ssh esteja executando e mantendo sua chave. Alguns sistemas operacionais modernos (por exemplo: OSX) lidam com isso para você.
Na sua máquina local
$ ssh-add -L
ssh-rsa ObahfCbvagGbLbhSbeHfvatEBG13== ~/.ssh/mykey.pem
ssh-rsa LbhNerWhfgJnnlGbbPyrireEBG13== ~/.ssh/sharedkey.pem
Figura 1
Isso significa que seu agente está em execução e possui sua chave.
$ ssh-add -L
The agent has no identities.
Figura 2
Isso significa que você não adicionou nenhuma chave ao seu agente. Corrija isso com:
ssh-add ~/.ssh/mykey.pem ~/.ssh/sharedkey.pem
fig.3
Passo 2
Verifique se o seu agente remoto está pronto
SSH no servidor bastião e repita a verificação das figuras 1 e 2 . No entanto, o erro que você tem mais chances de obter é o seguinte:
$ ssh-add -L
Could not open a connection to your authentication agent.
fig.4
Isso provavelmente significa que seu cliente SSH não está encaminhando sua conexão do agente de autenticação.
Você pode forçar isso com o -A
sinalizador (desde que a configuração do sshd no servidor permita, que é o padrão ).
$ ssh -A bastion.ec2
fig.5
etapa 3
Verifique se você está usando as teclas certas
Se você adicionou chaves ao seu agente, ele está encaminhando e seu agente remoto lista suas chaves locais. Há apenas dois motivos prováveis para você não estar obtendo uma conexão. Você não está usando a tecla certa ou não está usando o nome de usuário correto.
Envie a contrapartida pública para sua chave privada:
$ cd
$ cd .ssh
$ ssh-keygen -y -f mykey.pem
ssh-rsa ObahfCbvagGbLbhSbeHfvatEBG13
$ ssh-keygen -y -f sharedkey.pem
ssh-rsa LbhNerWhfgJnnlGbbPyrireEBG13
fig.6
Elas devem ser as mesmas que você estava vendo ssh-add -L
até ==
o final.
Agora, de uma forma ou de outra, você precisa entrar na caixa na qual não está se conectando e ver o conteúdo do $HOME/.ssh/authorized_keys
arquivo do usuário com o qual está tentando se conectar. Você precisa garantir que a chave pública que você produz com o comando acima esteja nesse arquivo em uma linha sozinha. Você não pode confiar que o sharedkey.pub
que os cubos do Bro 2 lhe enviaram por e-mail está certo. Verificar! Isso pode exigir a contratação de alguém que possa fazer o SSH como usuário para obter o arquivo allowed_keys ou obter acesso root. Se você chegou até aqui e ainda não está funcionando, está além de usar atalhos.
Passo 4
Tornar mais fácil
Esperamos que as etapas acima tenham ajudado você. Agora, vamos fazer com que essa dor de cabeça desapareça enquanto você estiver usando esta estação de trabalho.
Configure seu ssh-client local
Host *
# A lot of people put an IdentityFile line in this Host * section.
# Don't do that unless you will use only 1 key everywhere forever.
#IdentityFile id_rsa
Host bastion.ec2
# You want to make sure you always forward your agent to this host.
# But don't forward to untrusted hosts. So don't put it in Host *
ForwardAgent yes
# Go a head and put the IP here in case DNS ever fails you.
# Comment it out if you want. Having it recorded is a good backup.
HostName 172.31.0.1
# You don't want to create a proxy loop later, so be explicit here.
ProxyCommand none
# SSH should try using all keys in your .ssh folder, but if you
# know you want this key, being explicit speeds authentication.
IdentityFile ~/.ssh/mykey.pem
# Connect effortlessly by hostname or IP address
# This assumes that your internal DNS uses the fake TLD ec2
# This assumes that 172.31.0.0 is your C-Class subnet
Host *.ec2 172.31.*
# This command says proxy all ssh connections through bastion as if
# you had done an ssh -A
ProxyCommand ssh -W %h:%p bastion.ec2
ForwardAgent yes
# These next lines are documentation you leave as a love letter to
# your future self when all else fails or you have to help a
# coworker and decide to look at your own config.
# ssh-add ~/.ssh/*.pem
# ssh -At bastion.ecs ssh [email protected]
fig.7
Se você não tirar mais nada da fig.7 , deve ser o uso adequado de ProxyCommand
& ForwardAgent
.
Preencher automaticamente seu .bash_profile
Você não precisa fazer isso ssh-add
manualmente sempre que fizer login na sua máquina. ~/.bash_profile
é um script que é executado sempre que você faz login **. Coloque a linha da fig. 3 lá e você deve sempre ter seu agente pronto.
** Não confunda isso com o .bashrc
que é executado em cada novo terminal [interativo]. Seu agente continuará em execução, mesmo se você fechar todas as suas sessões de terminal. Não há necessidade de recarregar suas chaves
Alternativa ao uso de .bash_profile
Também criei uma essência que adiciona um OSX / macOS Launch Agent . Você pode usar esse método para iniciar sua ssh-agent
inicialização. É muito fácil de instalar:
curl -sSL https://gist.github.com/RichardBronosky/429a8fff2687a16959294bcee336dd2a/raw/install.sh | bash
ForwardAgent yes
com-A
que o anfitrião não permite isso.Você não encaminha as chaves. Você encaminha o agente e ele pode ter chaves completamente independentes do que você está usando para autenticação no primeiro salto. Verifique as chaves no seu agente usando
ssh-add -L
.Mas, melhor ainda, execute a conexão
ProxyCommand ssh -W %h:%p [email protected]
, o que evitará a necessidade de encaminhar o agente, as opções de heap ou linha de comando e a necessidade de autenticação no host imediato.Você pode simplesmente colocar isso na sua configuração (consulte
man ssh_config
).fonte
ssh-add mykey.pem sharedkey.pem
depois confirme comssh-add -L
entãossh -At [email protected] ssh [email protected]