SSH 키를 구성하는 방법은 무엇입니까?

SSH 키를 구성하는 방법은 무엇입니까?

저는 Debian에서 다양한 계정(예: Digital Ocean, GitHub 및 Bitbucket)에 대해 여러 개의 SSH 키를 생성해 왔지만 매우 빨리 혼란스러워졌습니다.

내가 얻은 .ssh 폴더의 내용을 나열하면 다음과 같습니다.

digOcn digOcn.pub github github.pub id_rsa id_rsa.pub

(저는 id_rsaBitbucket의 키를 사용합니다.)

나는 이것을 한 eval 'ssh-agent -s'다음 다음과 같이 키를 "추가"했습니다.

  • ssh-add ~/.ssh/github(그러면 비밀번호를 입력하세요)

  • ssh-add ~/.ssh/id_rsa(그러면 비밀번호를 입력하세요)

  • ssh-add ~/.ssh/digOcn(추가하려고 하면 digOcn"권한이 거부되었습니다"라고 표시됩니다. 뭔가를 건드리는 것을 피하려는 것이 아니며 sudo다른 키에는 필요하지 않습니다 sudo.)

혼란스러운 부분은 다음과 같습니다. 쇼에서는 ssh-add -l다음과 같은 정보를 제공합니다.

2048 so:me:nu:mb:er:s0:an:d9:le:tt:er:s0 /home/USER/.ssh/id_rsa (RSA)
2048 so:me:nu:mb:er:s0:an:d9:le:tt:er:s0 /home/USER/.ssh/github (RSA)
2048 so:me:nu:mb:er:s0:an:d9:le:tt:er:s0 github (RSA)
2048 so:me:nu:mb:er:s0:an:d9:le:tt:er:s0 USER@COMPUTER_NAME (RSA)

예, 과거에 SSH 키를 추가했지만, 무엇을 했는지 추적할 수 없습니다. 그래서 아마 둘 다 있는 것 같아요/home/USER/.ssh/github 그리고 github.


내가 뭘 잘못했나요? SSH 키를 어떻게 구성해야 합니까?

답변1

우선, 계정마다 다른 키를 사용하는 데 아무런 문제가 없습니다. 대화형 셸의 경우 이는 거의 과잉이지만 다른 비대화형 서비스를 처리할 때 이렇게 하는 데는 타당한 이유가 있습니다. 예를 들어, GitHub는 몇 년 전부터 더 강력한 SSH 키를 허용하기 시작했지만 Bitbucket은 한동안 더 약한 키 사용을 고집했습니다. 당시 올바른 방법은 서로 다른 키를 사용하여 GitHub와 Bitbucket에 액세스하는 것이었습니다.

또 다른 예는 입니다 rsync. 예를 들어 rsync웹 서버에 파일을 배포하는 경우 전용 SSH 키가 필요할 수 있습니다. 이를 통해 대화형 계정에서 일반적으로 사용되는 권한과 다른 권한을 설정할 수 있습니다.

여러 키 관리에 대한 질문으로 돌아가서: SSH를 사용하면 대상마다 다른 옵션을 설정할 수 있습니다. 이렇게 하려면 ~/.ssh/config다음과 같이 파일을 편집해야 합니다.

Host  bitbucket.org
    User                    hg
    IdentitiesOnly          yes
    IdentityFile            /home/user/.ssh/bitbucket

Host  github.com  gist.github.com
    User                    git
    IdentitiesOnly          yes
    IdentityFile            /home/user/.ssh/github

파일에는 ~/.ssh/config권한 0600이 있어야 합니다(이것이 SSH에 의해 시행되는지 지금은 기억나지 않지만 확실히 문제가 되지는 않습니다).

물론 대화형 셸에서도 동일한 메커니즘을 사용할 수 있으므로 원격 사용자 이름(로컬 사용자 이름과 다른 경우), 원격 포트, 단축된 호스트 이름 등과 같은 항목을 설정하세요. 예를 들어:

Host  sm
    Hostname                sphygmomanometer.example.com
    User                    human
    Port                    2222

그럼 당신은 실행할 수 있습니다

ssh sm

바꾸다

ssh -p 2222 [email protected]

와일드카드도 허용됩니다.

Host *
    ControlPath             ~/.ssh/ctl-%u-%r-%h-%p
    ControlMaster           auto
    ControlPersist          5m

자세한 내용은 설명서를 읽어보시기 바랍니다.

마지막으로 중요한 것은:아니요"일하다 eval 'ssh-agent -s'". 대중적인 믿음과는 달리 이는 심각한 안전 문제를 야기합니다. 올바른 접근 방식은 다음과 같습니다.

ssh-agent /bin/bash
ssh-add

(그런 다음 프롬프트가 표시되면 키 비밀번호를 입력하십시오). 그게 다입니다. 키로 키를 누르거나 다른 방법으로 키를 누르지 마십시오.

그러면 키가 로드되는 새 셸이 실행됩니다. 액세스 권한을 취소하려면 exit이 셸을 사용하세요. "그렇게 하면 eval 'ssh-agent -s'" 로그아웃한 후에도 인증 프록시가 오랫동안 실행되어 무단 액세스에 사용될 수 있습니다(결국 그렇게 될 것입니다).

편집하다:다음 작은 실험을 시도해 보세요.

  1. eval $(ssh-agent -s)
  2. 로그아웃 또는 터미널 종료
  3. 다시 로그인하거나 새 터미널을 엽니다.
  4. pgrep ssh-agent

아무도 이 들을 죽이지 않으며 , 다음 번에 최신 악성 코드에 사용될 준비가 되어 있을 ssh-agent때까지 남아 있습니다 .reboot

관련 정보