
~/.ssh
GitHub에 대한 SSH 연결에 사용되는 공개-개인 키 쌍이 있습니다 .
GitHub로 SSH를 제대로 설정했는지 테스트하기 위해 를 사용했는데 잘 작동합니다.ssh -T [email protected]
또한 슈퍼유저로 위의 명령을 실행하면 정상적으로 작동합니다.
su
ssh -T [email protected]
그러나 sudo를 사용하면 명령이 작동하지 않습니다. ~/.ssh
다음과 같이 실행할 때 저장된 키 쌍에 액세스할 수 없는 것 같습니다.sudo
아래 명령이 실패합니다.
sudo ssh -T [email protected]
모든 Ubuntu 배포판에서 문제를 쉽게 복제할 수 있으며이것GitHub 도움말 페이지.
편집하다:
나는 개인 키를 ssh
다음과 같이 전달할 수 있음을 이해합니다.
ssh -i <path-to-private-key> -T [email protected]
왜 사용하면 개인 키에 액세스할 수 없는지 궁금합니다 .sudo ssh -T [email protected]
답변1
가설: 일반 사용자를 위해 실행 중인 인증 에이전트가 있고 에이전트가 키를 보유하고 있습니다.
ssh
승격되지 않은 쉘에서 생성된 에이전트는 SSH_AUTH_SOCK
에이전트와 통신하기 위한 소켓의 위치를 알려주는 중요한 환경 변수를 상속받습니다. ssh
에이전트를 사용할 수 있는 경우 일반적으로 에이전트를 사용하는 방법입니다.
su
변수를 설정 해제하지 않습니다. ssh
after는 su
변수 덕분에 소켓을 찾을 수 있습니다. 일반적으로 소유자 이외의 사용자는 소켓에 액세스할 수 없지만 이제 ssh
루트로 실행되며 루트는 권한에 관계없이 (거의) 모든 파일에 액세스할 수 있습니다.
sudo
하다변수 설정을 해제합니다(기본적으로이것그리고저것). ssh
in이 sudo ssh …
소켓을 찾을 수 없습니다. 에이전트가 거기에 없었던 것 같습니다. ssh
에서는 의 몇 가지 기본 위치에서 올바른 개인 키를 찾으려고 시도 ~/.ssh
하지만 이제는 올바른 개인 키가 있는 일반 사용자의 홈 디렉터리가 아닌 루트의 홈 디렉터리를 확인합니다.
답변2
-i 옵션을 사용하여 ID 파일의 경로를 SSH에 전달할 수 있습니다.
ssh user@host -i /path/to/keyfile