KOPS Kubernetes가 배스천 호스트에 로그인할 수 없음, SSH 공개 키 권한 오류

KOPS Kubernetes가 배스천 호스트에 로그인할 수 없음, SSH 공개 키 권한 오류

저는 Kubernetes에 대해 배우고 있으며 KOPS 도구를 통해 AWS에서 그러한 클러스터 하나를 프로비저닝하고 싶었습니다. 공식 튜토리얼을 따른 다음 이것도 간략하게 설명합니다. https://medium.com/andcloudio/kubernetes-kops-cluster-on-aws-f55d197d8304

또한 여기에 설명된 대로 요새 호스트에 연결을 시도하기 전에 SSH 키를 추가했는지 확인했습니다. https://kops.sigs.k8s.io/bastion/#using-the-bastion

모든 것이 잘 진행되고 노드, 작업, 로드 밸런서 등이 생성되고 요새 호스트도 생성됩니다.

유일한 문제는 키를 사용하여 요새 호스트에 SSH로 연결할 수 없다는 것입니다. 자세한 출력을 확인하기 위해 -vvv를 사용하여 ssh를 실행했으며 로그는 아래와 같습니다. 문제가 무엇인지 이해가 안 돼요

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).

또한 문제 해결에 도움이 되도록 주요 결과를 게시하고 있습니다.

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

답변1

자세한 출력에서 ​​볼 수 있듯이 publickey인증을 시도할 때 사용된 를 기반으로 액세스가 거부되었습니다.

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).

위에서 기본적으로 확인된 모든 파일(특정 파일이 -i플래그로 지정되지 않은 경우)이 디렉터리에서 발견되지 않았음을 알 수 있습니다 /root/.ssh/.

admin이미 설명에서 설명한 것처럼 원격 호스트에 정의되지 않은 사용자를 사용한 것으로 나타났습니다 . ubuntu사용자가 성공적으로 로그인했음을 확인했습니다 ."이제 우분투 사용자로 시도했고 요새 호스트에 성공적으로 로그인했습니다."충분히 명확해졌으므로 댓글에 게시된 추가 질문에만 답변하는 데 집중하겠습니다.

그런 다음 호스트 -> 배스천에서 프로세스 복사 키를 반복한 다음 배스천에서 kubernetes 마스터로 ssh를 반복해야 했습니다. 이것은 이제 작동했지만 공식적으로 문서화된 -A 플래그가 어떻게든 마스터에게 전달될 것으로 예상했지만 발생하지 않았습니다. SSH를 수동으로 두 배로 만들고 키를 요새에 복사해야 했습니다 – Kristi Jorgji 31 ​​dec.

설명하신 로그인 ssh프로세스는 소위 점프 호스트를 통한 ssh-ing으로 알려져 있습니다. 이 방식은 기본적으로 작동하지 않으며 추가 구성이 필요하다는 점을 명심하세요. 보세요이 기사, 모든 것을 명확하게 설명하므로 알아야 할 사항SSH 에이전트 전달 설정로컬 키를 사용하려는 경우 수행해야 할 작업은 다음과 같습니다 ssh.요새 호스트(우연히 이것은점프 호스트이 시나리오에서는) 자동으로 ssh다른 곳으로 이동할 수도 있습니다.원격 호스트.

간단히 말해서, 파일이 존재하지 않는 경우 로컬 컴퓨터에 파일을 생성 ~/.ssh/config하고 로컬 SSH 키가 전달될 수 있도록 허용하려는 호스트를 다음과 같이 설정해야 ForwardAgent합니다 yes.

Host example.com # it can be either domain name or IP address
  ForwardAgent yes

또한 점프 호스트를 확인하십시오인바운드 연결에서 SSH 에이전트 전달을 허용합니다.:

서버에서 에이전트 전달이 차단될 수도 있습니다. 서버에 SSH로 연결하여 실행하면 에이전트 포워딩이 허용되는 것을 확인할 수 있습니다 sshd_config. 이 명령의 출력은 AllowAgentForwarding설정되었음을 나타내야 합니다.

이제 하나의 명령으로 로컬 시스템에서 직접 점프 호스트를 통해 대상 원격 호스트로 직접 SSH를 통해 연결할 수 있습니다 ssh. 잘 설명되어 있어요여기:

동적 점프호스트 목록

-J 옵션을 사용하여 호스트를 이동할 수 있습니다.

user $ ssh -J host1 host2

컴퓨터의 사용자 이름이나 포트가 다른 경우 이를 지정합니다.

user $ ssh -J user1@host1:port1 user2@host2:port2
다중 점프

동일한 구문을 사용하여 여러 시스템으로 이동할 수 있습니다.

user $ ssh -J user1@host1:port1,user2@host2:port2 user3@host3

관련 정보