ssh-agent를 사용하여 호스트별 키를 제공하고 ~/.ssh/config 파일에서 비밀번호를 관리하는 방법은 무엇입니까?

ssh-agent를 사용하여 호스트별 키를 제공하고 ~/.ssh/config 파일에서 비밀번호를 관리하는 방법은 무엇입니까?

~/.ssh/config 파일에서 다른 호스트와 키로 구성했습니다. 그러나 다른 키의 비밀번호를 관리하기 위해 ssh-add 명령을 통해 ssh-agent에 키를 추가하여 도움을 구했습니다. 이제 호스트에 SSH로 연결하면 에이전트가 가지고 있는 모든 키를 하나씩 제공합니다.

ssh-agent의 이 동작을 제한하는 방법을 검색하고 다음을 사용했습니다.

IdentitiesOnly yes

모든 호스트의 구성 파일에 있습니다.

이렇게 함으로써 ssh-agent가 소유한 키를 제공하는 것을 성공적으로 제한했지만 ssh-agent는 더 이상 암호를 관리하지 않으며 ssh할 때마다 암호를 입력해야 합니다.

내가 SSH로 연결하는 특정 호스트에 대한 키만 렌더링하고(~/.ssh/config 파일에서 읽기) 비밀번호를 관리하는 방법이 있나요?

답변1

이 문제는 다음을 수행하여 해결할 수 있습니다.

  1. ~/.ssh/config호스트 항목에 다음 내용이 포함되도록 클라이언트 파일을 편집합니다 .

    Host fooName
        Hostname foo.name.tld
        User usrname
        IdentityFile ~/.ssh/fooName.pub
        IdentitiesOnly yes
    

    IdentityFile지시문은 다음을 참조합니다.사람들개인 키 파일 대신 키.

  2. ssh-agent 에 관련 개인 키를 추가하는 데 사용됩니다 ssh-add. 이 시점에서 비밀번호를 묻는 메시지가 나타납니다.

답변2

다음을 지정할 수 있습니다.사람들키가 전달 IdentityFile되고 개인 키가 로드되면 ssh-agent사용됩니다. 그렇지 않으면 개인키로 처리되어 보호되지 않은 개인키 파일에 대한 오류가 발생할 수 있습니다.

  1. ssh-agent실행 중인지 확인하세요.
  2. 프록시에 신원 추가ssh-add ~/.ssh/id_rsa
    • 메시지가 나타나면 비밀번호 질문에 응답하세요.
  3. 당신의 신원을 추가하세요사람들~/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)

다시 시도하십시오.

관련 정보