SSH(특히 Git)를 통해 인증할 때 Yubikey/U2F 자격 증명을 어떻게 캐시할 수 있나요?

SSH(특히 Git)를 통해 인증할 때 Yubikey/U2F 자격 증명을 어떻게 캐시할 수 있나요?

내가 설정했어U2F를 사용하기 위한 GitHub 계정Yubikey를 사용하지만 (SSH 전체에서)힘내 배시 프롬프트, 그래서 터미널을 사용할 때마다 보안 키를 터치하라는 메시지가 표시됩니다.

SSH 자격 증명, 키 및 FIDO U2F 표준 간의 관계를 잘 이해하지 못하기 때문에 터미널을 사용할 때마다 메시지가 표시되지 않도록 환경을 설정하는 방법을 잘 모르겠습니다.

하루에 한 번, 세션당 한 번만 질문하도록 구성할 수 있나요?

답변1

우선 U2F는설계상 캐시할 수 없음. 이는 단순한 비밀번호가 아닙니다. 이는 토큰이 매번 다른 '도전'을 수신하고 아무런 문제 없이 디지털 서명을 발행하는 도전/응답 프로토콜입니다.항상비밀 키를 PC에 공개합니다(기본적으로 스마트 카드와 유사). 여기에는 주요 강점이 있습니다.

Yubikey의 기존 일회용 비밀번호에도 동일하게 적용됩니다. 이름에서 알 수 있듯이 그들은한 번, 서버는 동일한 비밀번호를 두 번 이상 허용하지 않으며 이미 허용된 비밀번호보다 오래된 비밀번호도 허용하지 않습니다.

즉, 할 수 있는 일은 두 가지입니다.

  • 먼저 자격 증명을 요구하는 것이 무엇인지 파악하십시오.~ 아니다SSH. U2F 지원패치아직 OpenSSH에 병합되지 않았으며 대화형 입력을 요청한 적이 없습니다. 비밀번호+2fa가 아닌 SSH 키 쌍만 사용합니다.ssh [email protected]

    마찬가지로 SSH가 아닌 HTTPS를 통해 실제로 푸시하는 경우 내가 아는 한 HTTP 인증에는 U2F 통합이 없으므로 최대 6자리 코드를 묻는 메시지가 표시됩니다.

    실제 크기의 Yubikey가 있는 경우 메시지가 표시될 때 표시등이 깜박이는지 확인하세요. U2F 확인을 기다릴 때만 깜박입니다. 계속 켜져 있으면 대신 일반 일회용 비밀번호를 보냅니다. 그리고 가능하다면보다Yubikey가 긴 비밀번호를 입력하는 것은 U2F가 아닙니다.

  • 둘째, SSH의 경우일반적으로, OpenSSH의 연결 캐싱/멀티플렉싱 기능을 활성화할 수 있습니다. 서버에 로그인하면 OpenSSH는 원격 셸을 닫은 후에도(즉, Git이 전송을 마친 후에도) 몇 분 동안 해당 연결을 유지합니다.

    그렇게 하려면 다음을 다음과 같이 입력하세요 ~/.ssh/config.

    Host *
        ControlMaster auto
        ControlPath ~/.ssh/S.%r@%h:%p
        ControlPersist 5m
    

    (이전 OpenSSH 버전은 ControlPersist를 지원하지 않으므로 다른 두 옵션을 유지할 수 있지만 를 사용하여 수동으로 연결을 시작해야 합니다 .)ssh -fNM [email protected]

관련 정보