~/.ssh/config 파일에서 다른 호스트와 키로 구성했습니다. 그러나 다른 키의 비밀번호를 관리하기 위해 ssh-add 명령을 통해 ssh-agent에 키를 추가하여 도움을 구했습니다. 이제 호스트에 SSH로 연결하면 에이전트가 가지고 있는 모든 키를 하나씩 제공합니다.
ssh-agent의 이 동작을 제한하는 방법을 검색하고 다음을 사용했습니다.
IdentitiesOnly yes
모든 호스트의 구성 파일에 있습니다.
이렇게 함으로써 ssh-agent가 소유한 키를 제공하는 것을 성공적으로 제한했지만 ssh-agent는 더 이상 암호를 관리하지 않으며 ssh할 때마다 암호를 입력해야 합니다.
내가 SSH로 연결하는 특정 호스트에 대한 키만 렌더링하고(~/.ssh/config 파일에서 읽기) 비밀번호를 관리하는 방법이 있나요?
답변1
이 문제는 다음을 수행하여 해결할 수 있습니다.
~/.ssh/config
호스트 항목에 다음 내용이 포함되도록 클라이언트 파일을 편집합니다 .Host fooName Hostname foo.name.tld User usrname IdentityFile ~/.ssh/fooName.pub IdentitiesOnly yes
이
IdentityFile
지시문은 다음을 참조합니다.사람들개인 키 파일 대신 키.ssh-agent 에 관련 개인 키를 추가하는 데 사용됩니다
ssh-add
. 이 시점에서 비밀번호를 묻는 메시지가 나타납니다.
답변2
다음을 지정할 수 있습니다.사람들키가 전달 IdentityFile
되고 개인 키가 로드되면 ssh-agent
사용됩니다. 그렇지 않으면 개인키로 처리되어 보호되지 않은 개인키 파일에 대한 오류가 발생할 수 있습니다.
ssh-agent
실행 중인지 확인하세요.- 프록시에 신원 추가
ssh-add ~/.ssh/id_rsa
- 메시지가 나타나면 비밀번호 질문에 응답하세요.
- 당신의 신원을 추가하세요사람들키
~/ssh/config
, 예를 들면 다음과 같습니다.
Host *
IdentityFile ~/.ssh/id_rsa.pub # Public key, SSH will consult ssh-agent
IdentitiesOnly yes
왜 이 일을 하고 싶나요?
개인 키를 암호화하는 것이 가장 좋은 방법이지만 키가 사용될 때마다 암호 질문에 응답해야 하는 것은 불편합니다. ssh-agent
암호 해독 키를 캐시하는 방법을 제공하므로 암호를 해독하기 위해 가끔 암호 질문에 응답하면 됩니다.
그러나 이로 인해 새로운 문제가 발생합니다. 일부 호스트는 연결을 닫기 전에 허용할 수 있는 인증 오류 수를 제한합니다. 키가 많으면 ssh-agent
"인증 오류가 너무 많습니다."로 나타나는 이 문제가 발생할 수 있습니다.
이를 방지하려면 IdentityFile
특정 호스트를 지정하고 해당 ID만 사용할 수 있습니다. 이렇게 하면 "너무 많은 인증 오류"를 깔끔하게 피할 수 있지만 이제 키가 사용될 때마다 비밀번호 요청에 응답해야 하므로 본질적으로 ssh-agent
편리한 캐싱 메커니즘을 우회해야 합니다!
에 해당 ID(개인키)가 존재한다는 것을 알고 있다면 ssh-agent
, ssh
이를 지정하여 사용할 수 있습니다.사람들직접 액세스하지 않고도 참조하는 개인 키를 찾는 데 충분한 키의 일부입니다.
개인 키를 사용하여 비밀번호를 추가/수정/삭제할 수 있습니다 ssh-keygen -p
.
~에 대한ssh-agent
ssh-agent
암호 해독 키는 어떤 프로세스에도 제공되지 않습니다. 대신, ssh
수신한 암호화된 질문을 보낸 ssh-agent
다음 질문 응답을 반환합니다. 이렇게 하면 개인 키가 안전하게 유지될 뿐만 아니라 ssh-agent
원격 시스템이 귀하의 신원에 액세스할 수 있도록 터널링도 허용됩니다(연결이 유지되는 한). man ssh_config
및 을 참조하십시오 ForwardAgent
.
문제 해결
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/Users/meermanr/.ssh/id_rsa.pub' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/Users/meermanr/.ssh/id_rsa.pub": bad permissions
ssh-agent
이는 실행 중이 아니거나 연결된 ID가 로드되지 않았음을 의미합니다 . 로드된 ID를 확인하세요 ssh-add -l
. 예를 들면 다음과 같습니다.
# ssh-add -l
The agent has no identities
짐사적인신원 키 ssh-add ~/.ssh/id_rsa
:
# ssh-add /Users/meermanr/.ssh/id_rsa
Enter passphrase for /Users/meermanr/.ssh/id_rsa
Identity added: /Users/meermanr/.ssh/id_rsa (/Users/meermanr/.ssh/id_rsa)
확인하다:
# ssh-add -l
4096 SHA256:2Mn+jr5imURFStSWVaDHXhhx+6cyXXBoNjOfPLy2thQ /Users/meermanr/.ssh/id_rsa (RSA)
다시 시도하십시오.