5월 16일경, 배포를 위해서 argo-cd에 들어가니, 다음과 같은 오류가 발생했다.
rpc error: code = Unknown desc = ssh: handshake failed: knownhosts: key mismatch
순간 불현듯 오늘 bitbucket cloud에 접속 시에 봤던 notification이 떠올랐다.
해당 내용을 요약하자면, 아래와 같다.
보안상의 이유로 UTC 기준 5월 15일 23시경에 두 개의 새로운 host key를 추가했고,
기존 RSA키는 UTC 기준 6월 20일 경에 교체하겠다는 것이었다. (더 자세한 내용은 공식 블로그 문서 참고)
We recently learned that encrypted copies of Bitbucket’s SSH host keys were included in a data breach of a third-party credential management vendor
On May 15, 2023 2300 UTC we added two new host keys using the ECDSA and Ed25519 algorithms
On June 20, 2023 1700 UTC we will replace our current RSA host key
오류가 난 시점과 키가 추가된 시점이 절묘하게 떨어졌지만, 사실 기존 키의 삭제는 6월 20일경이었기 때문에 혼란스러움이 가득했다.
argocd 상에서 모든 레포지토리와의 연결리 Failed가 된 상태였기 때문에 배포에 문제가 생기기 전에 해결을 했어야 했다.🥲
고민 끝에 새로운 두 개의 키를 known hosts에 추가 등록 해보았다.
bitbucket.org ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIazEu89wgQZ4bqs3d63QSMzYVa0MuJ2e2gKTKqu+UUO
bitbucket.org ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBPIQmuzMBuKdWeF4+a2sjSSpBK0iqitSQ+5BM9KhpexuGt20JpTVM7u5BDZngncgrqDMbWdxMWWOGtZ9UgbqgZE=
그 결과 정상 작동하였다! (우선 다행)💪🏻
하지만 여전히 의문을 남았다. 아까 bitbucket 측의 공지처럼 기존 키는 현재도 valid한 상태이다.
하지만 argocd에서는 왜 오류가 발생했던 걸까?
다시 bitbucket 측의 글을 읽으면서 가느다란 실마리 하나가 보였다.
xcrypto/ssh for Go 혹은 libssh2 for C와 같은 low-level 라이브러리가 포함된 경우에 이전 RSA키가 아닌 새롭게 추가된 키들로 validate를 시도할 수도 있다는 것이었다.
그래서 현재 사용 중인 argo-cd 레포에서 사용 중인 라이브러리를 찾아보았는데, xcrypto/ssh를 포함하고 있는 x/crypto를 사용하고 있다는 걸 알게 되었다..! 👀
우선 해당 라이브러리리로 인해 문제..라기 보다는 과정에서의 충돌 같긴한데
왜 그런지는 조금 더 알아보고 추가하기로 한다.