나는 최근에유비코의 보안키(FIDO/U2F 지원) 이 키를 사용하여 SSH 인증을 테스트하고 있습니다.
OpenSSH 8.2 릴리스 노트(OpenSSH 8.1 이후 변경 사항 섹션) 인용:
OpenSSH에서 새로운 공개 키 유형 "ecdsa-sk" 및 "ed25519-sk"는 FIDO 장치를 지원합니다 [...]
ecdsa-sk
이 (테스트) 키를 제공하지 않고 키를 생성한 암호를 사용한 후 ssh-keygen -t ecdsa-sk
평소대로 원격 호스트의 파일 id_ecdsa_sk.pub
에 내용을 추가했습니다.${HOME}/.ssh/authorized_keys
원격 호스트에 SSH 연결을 시도하면 아무 것도 표시되지 않지만 보안 키 장치가 깜박이며 터치 입력하라는 메시지가 나타납니다. 장치를 터치하자마자 SSH 연결이 설정됩니다.
일부 웹 검색 후(결과의 예) 다음과 같은 메시지가 표시되어야 한다고 생각합니다.
Confirm user presence for key ECDSA-SK SHA256:blah-blah-blah
이 문제를 어떻게 해결할 수 있나요?
에서도 동일한 동작이 관찰됩니다 ed25519-sk
.
환경정보
- 로컬 및 원격 운영 체제:
Linux Mint 20 Cinnamon
- 로컬 및 원격 OpenSSH:
OpenSSH_8.2p1 Ubuntu-4ubuntu0.1, OpenSSL 1.1.1f 31 Mar 2020
답변1
SSH 에이전트는 ssh
자체가 아닌 보안 키와 상호작용합니다. 이는 에이전트가 터미널에 연결되어 있지 않다는 것을 의미합니다. 즉, Mint Cinnamon에서는 GNOME Keyring이 터미널로 사용됩니다. SSH 에이전트는 기본적으로 적용되지만 이는 ssh-agent
.
이 메시지를 표시하는 데는 몇 가지 옵션이 있습니다.
SSH-askpass 사용
X를 사용하는 경우 에이전트는 ssh-askpass
팝업 창을 통해 메시지를 표시하는 데 사용할 수 있습니다. 비밀번호(따라서 이름)를 묻는 데 가장 자주 사용되지만 GNOME Keyring 및 ssh-agent
. Mint와 같은 Debian 기반 배포판에서는 다음과 같이 간단해야 합니다 apt install ssh-askpass-gnome
. (more-plain 과 같은 다른 변형도 있습니다 ssh-askpass
.)
에이전트에서 키 제거
터미널에서 메시지를 받으려면 에이전트 에서 먼저 인증을 시도한 다음 의 기본 키 이름으로 돌아가서 ssh
메시지를 표시 할 수 있습니다 .id_ecdsa_sk
ssh
~/.ssh
그놈 키링을 사용하면 모든 키가 ~/.ssh
자동으로 에이전트에 추가되므로 키를 제거하려면 키를 디렉터리 밖으로 이동해야 합니다.
mkdir ~/.ssh/noauto
mv ~/.ssh/id_ecdsa_sk* ~/.ssh/noauto/
그런 다음 이 키를 사용하려는 호스트에 대한 IdentityFile
옵션 을 추가하십시오 .~/.ssh/config
Host remotename
IdentityFile ~/.ssh/noauto/id_ecdsa_sk
그놈 키링 대신 사용하는 경우 ssh-agent
키를 다른 디렉터리로 이동하는 대신 를 사용하여 에이전트에서 키를 삭제할 수 있습니다 ssh-add -d ~/.ssh/id_ecdsa_sk
.
또는 을 사용 ssh-agent
하고 옵션을 쉽게 전달할 수 있는 경우 빈 문자열로 ssh-agent
설정할 수 있습니다 . 즉 , 실행하면 모든 PKCS#11 및 FIDO 기반 키를 에이전트에 로드하는 것이 효과적으로 블랙리스트에 추가됩니다.-P
ssh-agent -P ""
보안 키 기반 SSH 키와 클라이언트 및 서버 측 모두에 구성된 기존 SSH 키 가 있는 경우 보안 키 대신 기존 키를 사용하여 인증하게 될 수 있습니다 id_ecdsa_sk
. ssh-agent
키. 에이전트에서 키를 제거하면 에이전트 전달( ssh -A
)이 있는 원격 호스트에서 키를 사용할 수 없다는 의미이기도 합니다.