sudo로 실행할 때 ssh가 /root/.ssh에서 키를 찾는 이유는 무엇입니까?

sudo로 실행할 때 ssh가 /root/.ssh에서 키를 찾는 이유는 무엇입니까?

시도하면 조회 키가 가 아니기 sudo ssh ...때문에 권한이 거부되었습니다 . 하지만 아직 설정되어 있으므로 들어가서 살펴보는 것이 어떨까요 ?ssh/root/.ssh/home/me/.ssh$HOME/home/messh$HOME/.ssh

답변1

ssh무시하면 $HOME사용자 데이터베이스를 기반으로 홈 디렉터리를 가져옵니다.진짜uid 1개( pw_dir반환된 구조 필드 사용 getpwuid())

ssh위와 같이 파일을 쓸 수 있다는 점을 고려하면 거기에 루트 소유 파일이 생기기 known_hosts때문에 그렇게 하지 않는 것이 가장 좋습니다 ./home/me/.ssh

항상 인증 프록시를 사용 sudo ssh -i ~/.ssh/id_rsa ...하거나 인증 프록시를 사용할 수 있으며 인증 프록시에 대한 소켓 경로를 루트에 전달해야 합니다.

sudo --preserve-env=SSH_AUTH_SOCK ssh ...

또는

sudo SSH_AUTH_SOCK="$SSH_AUTH_SOCK" ssh ...

ssh또한 루트로 실행 해야 합니까 ? 1024 이하의 TCP 포트에서 터널을 생성하거나 로컬 포트 ​​전달을 바인딩할 수 있습니까? 마치 root원격 호스트에 있는 것처럼 로그인 할 수 있다면 이것 ssh root@host만으로도 충분합니다.


1 실제 uid를 0으로 유지하면서 실제 uid를 원래 uid로 복원할 수 있습니다.

sudo perl -e '$<=getpwnam($ENV{SUDO_USER}); exec@ARGV' ssh ...

답변2

sudo"다른 사용자로 명령 실행"( )이 허용되지만 누락 man sudo된 경우 "기본 대상 사용자(보통 루트)"가 사용됩니다. 그렇기 때문에 root원격측의 계정을 찾는 것입니다.

관련 정보