저는 Debian에서 다양한 계정(예: Digital Ocean, GitHub 및 Bitbucket)에 대해 여러 개의 SSH 키를 생성해 왔지만 매우 빨리 혼란스러워졌습니다.
내가 얻은 .ssh 폴더의 내용을 나열하면 다음과 같습니다.
digOcn digOcn.pub github github.pub id_rsa id_rsa.pub
(저는 id_rsa
Bitbucket의 키를 사용합니다.)
나는 이것을 한 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'
" 로그아웃한 후에도 인증 프록시가 오랫동안 실행되어 무단 액세스에 사용될 수 있습니다(결국 그렇게 될 것입니다).
편집하다:다음 작은 실험을 시도해 보세요.
eval $(ssh-agent -s)
- 로그아웃 또는 터미널 종료
- 다시 로그인하거나 새 터미널을 엽니다.
pgrep ssh-agent
아무도 이 들을 죽이지 않으며 , 다음 번에 최신 악성 코드에 사용될 준비가 되어 있을 ssh-agent
때까지 남아 있습니다 .reboot