SSH 비밀번호 없는 루트 로그인이 "권한 거부됨(공개 키)"을 수신했습니다.

SSH 비밀번호 없는 루트 로그인이 "권한 거부됨(공개 키)"을 수신했습니다.

동일한 LAN에 두 개의 Raspberry Pi(Raspbian 7 및 8 포함)가 연결되어 있습니다. 하나는 APC UPS에 대한 데이터 연결이 있습니다. 정전 시 실행할 수 있는 유사한 스크립트가 두 시스템 모두에 여러 개 있습니다. (UPS에 연결된 Pi에서) 나는 다음과 같은 것을 가지고 있습니다 /etc/apcupsd/onbattery:/etc/apcupsd/offbattery

# [...] 
# after the e-mail stuff

# this is for the remote machine
/usr/bin/ssh -f pi@piac-pal_wired "sh -c '/home/pi/bin/my_script.sh > /dev/null 2>&1'"

# this is for the local machine, connected to the UPS
/home/pi/bin/my_script.sh

로컬 스크립트는 작동하지만 원격 Pi에 대한 스크립트는 작동하지 않습니다(오류: "권한이 거부되었습니다(공개 키)."). 일반 사용자로 실행하면 마찬가지로 sudo쉘에서도 작동합니다.

그래서 루트 사용자가 공유 키 방법을 사용하여 SSH를 통해 다른 시스템에 연결할 수 없다는 것이 문제라는 것을 이해합니다.

sudo ssh명령을 실행하면 -vv제공된 키가 의 키임을 알 수 있습니다 /root/.ssh/id_rsa. 해당 공개 키가 root/.ssh/authorized_keys원격 컴퓨터에 추가되었으며 해당 /etc/ssh/sshd_config구성에는 다음이 포함됩니다.

RSAAuthentication yes
PubkeyAuthentication yes
PasswordAuthentication no
PermitRootLogin without-password

위의 마지막 두 줄을 변경하면:

PasswordAuthentication yes
PermitRootLogin yes

UPS에 연결된 Pi의 루트 사용자는 원격 Pi에 로그인할 수 있지만 명령에는 비밀번호가 필요하며 apcupsd 스크립트가 무인으로 실행될 때는 비밀번호를 입력할 수 없습니다.

어떤 제안이라도 매우 환영합니다. 감사해요.

ssh -vvv편집: 제안된 대로 명령 출력을 추가했습니다. 관련 부분이 끝에 있다고 생각합니다.

debug3: load_hostkeys: loaded 1 keys
debug1: Host '$HOSTNAME' is known and matches the ECDSA host key.
debug1: Found key in /root/.ssh/known_hosts:7
debug1: ssh_ecdsa_verify: signature correct
debug2: kex_derive_keys
debug2: set_newkeys: mode 1
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug2: set_newkeys: mode 0
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug2: service_accept: ssh-userauth
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug2: key: /root/.ssh/id_rsa (0x7f8c72a8)
debug2: key: /root/.ssh/id_dsa ((nil))
debug2: key: /root/.ssh/id_ecdsa ((nil))
debug1: Authentications that can continue: publickey
debug3: start over, passed a different list publickey
debug3: preferred gssapi-keyex,gssapi-with-mic,publickey,keyboard-interactive,password
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /root/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey
debug1: Trying private key: /root/.ssh/id_dsa
debug3: no such identity: /root/.ssh/id_dsa
debug1: Trying private key: /root/.ssh/id_ecdsa
debug3: no such identity: /root/.ssh/id_ecdsa
debug2: we did not send a packet, disable method
debug1: No more authentication methods to try.
Permission denied (publickey).

답변1

문제는 ssh 명령이 pi사용자가 아닌 사용자를 호출하므로 의 사용자 가 아니라 의 사용자가 root확인 되고 있다는 것입니다 . 내가 해야 할 일은 클라이언트의 루트 키를 서버의 .authorized_keys/home/pi/.ssh/root/.ssh/home/pi/.ssh/authorized_keys

관련 정보