sudo가 개인 키에 접근할 수 없습니다

sudo가 개인 키에 접근할 수 없습니다

~/.sshGitHub에 대한 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변수를 설정 해제하지 않습니다. sshafter는 su변수 덕분에 소켓을 찾을 수 있습니다. 일반적으로 소유자 이외의 사용자는 소켓에 액세스할 수 없지만 이제 ssh루트로 실행되며 루트는 권한에 관계없이 (거의) 모든 파일에 액세스할 수 있습니다.

sudo 하다변수 설정을 해제합니다(기본적으로이것그리고저것). sshin이 sudo ssh …소켓을 찾을 수 없습니다. 에이전트가 거기에 없었던 것 같습니다. ssh에서는 의 몇 가지 기본 위치에서 올바른 개인 키를 찾으려고 시도 ~/.ssh하지만 이제는 올바른 개인 키가 있는 일반 사용자의 홈 디렉터리가 아닌 루트의 홈 디렉터리를 확인합니다.

답변2

-i 옵션을 사용하여 ID 파일의 경로를 SSH에 전달할 수 있습니다.

ssh user@host -i /path/to/keyfile

관련 정보