Estou aprendendo sobre Kubernetes e queria provisionar um cluster desse tipo na AWS por meio da ferramenta KOPS. Segui o tutorial oficial e, resumindo, este também https://medium.com/andcloudio/kubernetes-kops-cluster-on-aws-f55d197d8304
Também certifiquei-me de adicionar a chave ssh antes de tentar conectar-me ao host bastião, conforme explicado aqui também https://kops.sigs.k8s.io/bastion/#using-the-bastion
Tudo corre bem, nós, trabalhos, balanceadores de carga, etc. são criados e o host bastião também.
O único problema é que não consigo fazer ssh no host bastião com a chave. Executei o ssh com -vvv para ver a saída detalhada e o log está abaixo. Eu não entendo qual é o problema
ssh -A admin@${bastion_elb_url} -vvv
Warning: Permanently added 'bastion-single-k8s-local-noarfe-151938406.eu-central-1.elb.amazonaws.com,3.121.65.83' (ECDSA) to the list of known hosts.
debug3: send packet: type 21
debug2: set_newkeys: mode 1
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug3: receive packet: type 21
debug1: SSH2_MSG_NEWKEYS received
debug2: set_newkeys: mode 0
debug1: rekey after 134217728 blocks
debug2: key: /root/.ssh/id_rsa (0x55d6af4ea570), agent
debug2: key: /root/.ssh/id_dsa ((nil))
debug2: key: /root/.ssh/id_ecdsa ((nil))
debug2: key: /root/.ssh/id_ed25519 ((nil))
debug3: send packet: type 5
debug3: receive packet: type 7
debug1: SSH2_MSG_EXT_INFO received
debug1: kex_input_ext_info: server-sig-algs=<ssh-ed25519,[email protected],ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,[email protected]>
debug3: receive packet: type 6
debug2: service_accept: ssh-userauth
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug3: send packet: type 50
debug3: receive packet: type 51
debug1: Authentications that can continue: publickey
debug3: start over, passed a different list publickey
debug3: preferred gssapi-keyex,gssapi-with-mic,publickey,keyboard-interactive,password
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /root/.ssh/id_rsa
debug3: send_pubkey_test
debug3: send packet: type 50
debug2: we sent a publickey packet, wait for reply
debug3: receive packet: type 51
debug1: Authentications that can continue: publickey
debug1: Trying private key: /root/.ssh/id_dsa
debug3: no such identity: /root/.ssh/id_dsa: No such file or directory
debug1: Trying private key: /root/.ssh/id_ecdsa
debug3: no such identity: /root/.ssh/id_ecdsa: No such file or directory
debug1: Trying private key: /root/.ssh/id_ed25519
debug3: no such identity: /root/.ssh/id_ed25519: No such file or directory
debug2: we did not send a packet, disable method
debug1: No more authentication methods to try.
Permission denied (publickey).
Também estou postando os principais resultados para ajudar na solução de problemas:
root@vagrant:/srv# ssh-add -L
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCq9cN3EAEy0WiASY/IBkF9SPIpLv/bZt1tpLc95cb5fG++ac5VX36rA4XukJFtCAk6I4P82ysuqfZGUQNsB57yibz9rbKZ1bFfxRPyGZS22/1Omqb/8B2NlNpJx42sK4odyUj3G+KLCGCmID/AEDhbjeY7d99ZuE6g8aqrtSo0fwsmNHnpvDS8Dt0IjbLxg41Sms9tmYDLlc/tncAs9BmRvuhPbg+BDw+z7ecLneI7+TexDfhXbnZkYfjFLsfI8vWivOu8ptuGVvPkQz/MJo+MokZEzoGbVCAZP5mYSIz+LIFnnCoh5WOMsB3OZuwvelR5bBgWjQhvOaWOX8BuSU5v /root/.ssh/id_rsa
Responder1
Como você pode ver na saída detalhada, o acesso foi negado com base no publickey
que foi usado ao tentar autenticar:
debug1: Authentications that can continue: publickey
debug1: Trying private key: /root/.ssh/id_dsa
debug3: no such identity: /root/.ssh/id_dsa: No such file or directory
debug1: Trying private key: /root/.ssh/id_ecdsa
debug3: no such identity: /root/.ssh/id_ecdsa: No such file or directory
debug1: Trying private key: /root/.ssh/id_ed25519
debug3: no such identity: /root/.ssh/id_ed25519: No such file or directory
debug2: we did not send a packet, disable method
debug1: No more authentication methods to try.
Permission denied (publickey).
Você pode ver acima que todos os arquivos verificados por padrão (se o arquivo específico não foi especificado com -i
sinalizador) não foram encontrados em seu /root/.ssh/
diretório.
Conforme já discutido nos comentários, descobriu-se que você usou o admin
usuário que não estava definido no host remoto. Você confirmou que com ubuntu
o usuário conseguiu fazer login com sucesso:"agora tentei com o usuário Ubuntu e efetuei login com sucesso no Bastion Host"Como foi suficientemente esclarecido, focarei apenas em responder sua pergunta adicional, postada nos comentários:
Em seguida, foi necessário repetir o processo de cópia das chaves do Host -> bastion e, em seguida, ssh do bastion para o mestre do Kubernetes. Isso funcionou agora, mas eu esperava que o sinalizador -A documentado oficialmente fosse encaminhado de alguma forma para o mestre, mas isso não aconteceu. Tive que duplicar o ssh manualmente e copiar as chaves para o bastião
O ssh
processo de login que você descreveu é conhecido como ssh-ing por meio do chamado host de salto. Lembre-se de que isso não funciona imediatamente e requer configuração adicional. Dê uma olhadaEste artigo, pois explica tudo claramente, você precisa saber sobreconfigurando o encaminhamento do agente SSHo que precisa ser feito se você quiser usar suas chaves locais ssh
não apenas para ohospedeiro bastião(que por acaso é umhospedeiro de saltoneste cenário), mas também para ir automaticamente ssh
de lá para outrohospedeiro remoto.
Resumindo, você precisa criar ~/.ssh/config
um arquivo em sua máquina local, se ele não existir, e definir o host para o qual deseja permitir que suas chaves ssh locais sejam encaminhadas e definidas ForwardAgent
como yes
:
Host example.com # it can be either domain name or IP address
ForwardAgent yes
Além disso, certifique-se de que seu host de saltopermite o encaminhamento do agente SSH em conexões de entrada:
O encaminhamento de agente também pode estar bloqueado em seu servidor. Você pode verificar se o encaminhamento do agente é permitido fazendo SSH no servidor e executando o
sshd_config
. A saída deste comando deve indicar queAllowAgentForwarding
está definido.
Agora você deve ser capaz de fazer ssh diretamente para seu host remoto de destino por meio de um jumphost diretamente de sua máquina local com um ssh
comando. Está bem descritoaqui:
Lista dinâmica de jumphost
Você pode usar a opção -J para passar por um host:
user $ ssh -J host1 host2
Se os nomes de usuário ou portas nas máquinas forem diferentes, especifique-os:
Vários saltosuser $ ssh -J user1@host1:port1 user2@host2:port2
A mesma sintaxe pode ser usada para fazer saltos em múltiplas máquinas:
user $ ssh -J user1@host1:port1,user2@host2:port2 user3@host3