저는 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은 한동안 더 약한 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'
"하면 로그오프한 후에도 인증 에이전트가 계속 실행되고 무단 액세스에 사용될 수 있습니다(결국 그렇게 될 것입니다).
편집하다:다음 작은 실험을 시도해 보세요.
eval $(ssh-agent -s)
- 로그오프하거나 터미널을 종료하세요.
- 다시 로그인하거나 새 터미널을여십시오
pgrep ssh-agent
아무도 이 를 죽이지 않으며 , 최신 맬웨어에 사용될 준비가 되어 있는 ssh-agent
다음까지 남아 있습니다 .reboot