FreeBSD sudo 루트 및 ssh-agent

FreeBSD sudo 루트 및 ssh-agent

내 FreeBSD 11.3 시스템에서 루트 계정을 통해 git 서버에 액세스하려고 합니다. Git 서버는 보호되며 SSH 공개 키 인증을 통해서만 액세스를 허용합니다.

FreeBSD 상자에 로그인할 때 사용자로 로그인합니다. 그런 다음 루트에 sudo를 실행합니다. Git 서버에 연결하려고 하면 비밀번호를 묻는 메시지가 나타납니다. sudo를 사용하지 않고 사용자로 남아서 git 서버에 연결하려고 하면 SSH 공개 키 인증이 매력적으로 작동합니다. 이것은 ssh -v gitserver의 출력입니다.

OpenSSH_7.5p1, OpenSSL 1.0.2s-freebsd  28 May 2019
debug1: Reading configuration data /root/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Connecting to gitserver.xxx.tld [192.168.x.y] port 22.
debug1: Connection established.
debug1: permanently_set_uid: 0/0
debug1: Fssh_key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_rsa type -1
debug1: Fssh_key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_rsa-cert type -1
debug1: Fssh_key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_dsa type -1
debug1: Fssh_key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_dsa-cert type -1
debug1: Fssh_key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_ecdsa type -1
debug1: Fssh_key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_ecdsa-cert type -1
debug1: Fssh_key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_ed25519 type -1
debug1: Fssh_key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_ed25519-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_7.5 FreeBSD-20170903
debug1: Remote protocol version 2.0, remote software version OpenSSH_7.2p2 Ubuntu-4ubuntu2.8
debug1: match: OpenSSH_7.2p2 Ubuntu-4ubuntu2.8 pat OpenSSH* compat 0x04000000
debug1: Authenticating to gitserver.xxx.tld:22 as '<gituser>'
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: algorithm: [email protected]
debug1: kex: host key algorithm: ecdsa-sha2-nistp256
debug1: kex: server->client cipher: [email protected] MAC: <implicit> compression: none
debug1: kex: client->server cipher: [email protected] MAC: <implicit> compression: none
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ecdsa-sha2-nistp256 SHA256:<here comes a long key expression>
DNS lookup error: data does not exist
debug1: Host 'gitserver.xxx.tld' is known and matches the ECDSA host key.
debug1: Found key in /root/.ssh/known_hosts:1
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_EXT_INFO received
debug1: Fssh_kex_input_ext_info: server-sig-algs=<rsa-sha2-256,rsa-sha2-512>
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password,keyboard-interactive
debug1: Next authentication method: publickey
debug1: Trying private key: /root/.ssh/id_rsa
debug1: Trying private key: /root/.ssh/id_dsa
debug1: Trying private key: /root/.ssh/id_ecdsa
debug1: Trying private key: /root/.ssh/id_ed25519
debug1: Next authentication method: keyboard-interactive
Password:

SSH-agent가 내 키를 원격 호스트에 제공하지 않는 것 같습니다...

이 문제를 해결하는 방법에 대한 아이디어가 있습니까? 루트를 사용할 수 없는 키 비밀번호를 사용할 수 있습니까(생각만 했을 뿐입니다)?

올라프님 안녕하세요

답변1

sudo기본적으로 거의 모든 환경 변수를 지우거나 알려진 안전 값으로 재설정하여 sudo로 얻은 권한(예: PATH 또는 LD_LIBRARY_PATH 설정)을 활용하는 데 사용할 수 없도록 합니다.

env_reset이 기능은 다음 에서 옵션을 꺼서 비활성화할 수 있습니다 ./etc/sudoers매우강하게권장되지 않음) 또는 sudo다른 환경 변수를 보존하도록 구성할 수 있습니다. 예를 들면 다음과 같습니다 /etc/sudoers.

env_keep += "SSH_AGENT_PID SSH_AUTH_SOCK"

자세히 보고 알아 man sudoers보세요 man sudo.


또는 이 루트 계정이 다른 사람과 공유되지 않는 경우(예: 개인용 컴퓨터) 루트에 대한 키 쌍을 생성한 다음 루트의 공개 키를 Git 서버 사용자 계정에 추가할 수 있습니다.


추신: 저는 SSH 에이전트를 사용할 필요가 없었지만 via와 같은 도구를 실행하고 싶을 때는 env_keep... 원격 머신에서 실행하기 위해 -ing할 때도 사용했습니다.env_keep += "DISPLAY"gpartedsudossh -Xgparted

답변2

root로컬 컴퓨터에 있는 경우 기본적으로 사용자 및 공개 키를 ssh사용하여 원격 컴퓨터에 로그인하려고 시도합니다 .rootroot

user@hostname원격 컴퓨터에 로그인할 사용자를 지정하려면 구문을 사용하고 -i사용할 키를 지정하려면 옵션을 사용해야 합니다 .

예를 들어:

ssh -i ~user/.ssh/id_rsa [email protected]

바라보다SSH(1)더 알아보기.

관련 정보