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노력하지도 않습니다 .)sudosudo

혼란스러운 부분은 다음과 같습니다. 수행을 하면 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은 한동안 더 약한 SSH 키를 사용하도록 주장했습니다. 당시 올바른 조치는 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

관련 정보