SSH 인증서를 사용하지 않았다면 SSH가 잘못되었습니다 | 1회: 키와 인증서
5581 단어 sredevopsopensourcesecurity
다음과 같은 문제에 대해 잘 알고 계실 수 있습니다.
SSH 사용자 환경은 매우 나쁘다.SSH 사용자는 로그인 속도가 느려서 수동으로 작업해야 합니다.새 호스트에 연결하면 곤혹스러운 안전 경고가 발생합니다.너는 관리해야 할 이상한 새 인증서만 남았고, 어떻게 관리하는지에 대한 지도는 거의 없다.
SSH를 대규모로 실행하는 것은 재난이다.키 승인과 분배는 어리석은 시간 낭비이다.호스트 이름은 재사용할 수 없습니다.국산 공구는 관건적인 재료를 당신의 차량 대열에 분산시키고, 잠시 후에 반드시 비차량 사용자에게 정리해야 합니다.
SSH는 나쁜 안전 방법을 장려한다.키를 다시 설정하는 것은 매우 어려워서 아직 완성되지 않았습니다.사용자는 관건적인 자료에 접근할 수 있고 여러 장치에서 키를 재사용하도록 장려할 수 있다.키는 영구적으로 신뢰되기 때문에 오류가 발생했습니다.
이 문제들은 사실 모두 SSH 고유의 것이 아니다.실제로 SSH 공개 키 인증의 문제입니다.해결 방안은 인증서 인증으로 전환하는 것이다.
SSH 인증서 인증은 SSH를 사용하기 쉽고 조작하기 쉽고 안전하게 합니다.
출신 배경
smallstep에서 인증서는 마치 우리의 잼과 같다.개인 인증서 발급 기관을 실행하고 X.509(TLS/HTTPS) 인증서를 관리할 수 있는 소스 오픈 소프트웨어를 구축했습니다.
SSH 인증서가 우리 레이더에 한동안 나타났습니다.우리의 관점에서 볼 때 그들은 모두 찬성자이고 반대자가 없다.하지만 아무도 사용하지 않는다.왜 안 해요?우리는 이미 수백 명에게 이 문제를 물었다.다음은 우리가 발견한 것이다.
공개 키 인증
대부분의 SSH 배포는 공개 키 인증을 사용합니다. 비대칭(공개 키) 암호화를 사용하고 모든 사용자와 호스트에 공개 키/개인 키를 생성하여 인증을 합니다.
비대칭 암호의 신기한 점은 공개 키와 개인 키 사이의 특수한 대응이다.개인 키를 사용하여 데이터에 서명할 수 있고, 다른 사람들은 해당하는 공공 키를 사용하여 서명을 검증할 수 있습니다.산열처럼 위조 서명은 계산상 불가능하다.따라서 서명을 검증할 수 있고 누가 개인 키를 가지고 있는지 알면 누가 서명을 만들었는지 알 수 있습니다.
간단한 신분 검증은 누군가가 큰 무작위 숫자에 서명하는 것에 도전함으로써 실현될 수 있다.만약 내가 콘센트를 켜서 너에게 무작위 숫자를 보내고, 네가 이 숫자에 유효한 서명을 한다면, 나는 반드시 너와 이야기하고 있을 것이다.
이것은 지나치게 간소화된 방식이지만 많든 적든 SSH 키 인증의 작업 원리이다.인증서 인증의 작업 방식은 같지만 중요한 전환점이 있습니다. 잠시 후에 소개하겠습니다.
공개 키 인증을 사용하여 SSH를 통해 호스트에 연결하려면 호스트가 공개 키를 알아야 합니다.기본적으로 공개 키는
~/.ssh/authorized_keys
에 추가되어야 합니다.차량 팀의 모든 사용자를 위해 이 파일을 유지하는 것은 작업에 도전적이며 오류가 발생하기 쉽다.공개 키 인증을 사용하는 SSH 사용자 로그인은 보통 발락 주문
ssh-keygen
부터 시작하여 런북에서 추출하기를 원하지만 창고 넘침에서 표절할 수 있습니다.다음은 승인과 분배를 위해 공개 키를 제출하도록 요구할 것입니다.이 과정은 통상적으로 수동적이고 불투명하다.관리자에게 이메일을 보내거나 JIRA 어음을 열어야 할 수도 있습니다.그리고 기다려.이렇게 하는 과정에서 일부 엉망진창인 운영자들이 끊어지고, 키를 어떤repo의 목록에 추가하고, 배치를 촉발하는 것을 알립니다.완료되면 SSH를 사용할 수 있습니다.키 바인딩은 영구적이기 때문에 SSH 액세스는 이 과정을 역전할 때까지 영구적으로 유지됩니다.인증서 인증
인증서 인증은 키 승인과 배달을 제거합니다.정적 파일에 키를 분산하지 않고 인증서가 있는 이름으로 키를 연결합니다.인증서는 공개 키, 이름, 보조 데이터, 예를 들어 기한과 권한 등 데이터 구조일 뿐이다.데이터 구조는 인증서 발급 기관(CA)에서 서명합니다.
$ ssh-keygen -L -f id_ecdsa-cert.pub
id_ecdsa-cert.pub:
Type: [email protected] user certificate
Public key: ECDSA-CERT SHA256:O6M6oIjDm5gPm1/aTY619BgC3KSpS4c3aHVWxYh/uGQ
Signing CA: ECDSA SHA256:EY2EXJGoPv2LA6yEbjH+sf9JjG9Rd45FH1Wt/6H1k7Y
Key ID: "[email protected]"
Serial: 4309995459650363134
Valid: from 2019-09-11T14:50:01 to 2019-09-11T18:50:01
Principals:
mike
Critical Options: (none)
Extensions:
permit-X11-forwarding
permit-agent-forwarding
permit-port-forwarding
permit-pty
permit-user-rc
인증서 인증을 사용하려면 CA 공개 키가 서명한 인증서를 신뢰할 수 있도록 클라이언트와 호스트를 구성해야 합니다.각 호스트에서 편집
/etc/ssh/sshd_config
, 사용자 인증서를 검증하는 CA 공개 키, 호스트의 개인 키 및 호스트에 대한 인증서를 지정합니다.# Path to the CA public key for verifying user certificates
TrustedUserCAKeys /etc/ssh/ssh_user_key.pub
# Path to this host's private key and certificate
HostKey /etc/ssh/ssh_host_ecdsa_key
HostCertificate /etc/ssh/ssh_host_ecdsa_key-cert.pub
각 클라이언트에 호스트 인증서 검증을 위한 CA 키를 지정하는 줄~/.ssh/known_hosts
을 추가합니다.@cert-authority *.example.com ecdsa-sha2-nistp256 AAAAE...=
그렇습니다.이것이 바로 인증서 인증을 사용하기 시작하는 데 필요한 모든 것이다.변환을 간소화하기 위해 공개 키 인증과 함께 사용할 수도 있습니다.더 이상
~/.ssh/authorized_keys
의 정적 키가 필요하지 않습니다.반대로 연결을 만들 때 등점은 인증서 교환을 통해 서로의 키를 배워야 한다.인증서를 교환하면 프로토콜은 공개 키 인증처럼 진행된다.SSH 인증서에 대한 자세한 내용은 를 참조하십시오.당신은 심지어 우리의 무료 위탁 관리 서비스를 시도하여 5분도 안 되는 시간 안에 SSH 인증서의 가치를 체험할 수 있습니다!
Reference
이 문제에 관하여(SSH 인증서를 사용하지 않았다면 SSH가 잘못되었습니다 | 1회: 키와 인증서), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/smallstep/if-you-re-not-using-ssh-certificates-you-re-doing-ssh-wrong-episode-1-keys-versus-certificates-5a0n텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)