호스트 키 확인에 실패했습니다. #015

호스트 키 확인에 실패했습니다. #015

원격 컴퓨터에서 스크립트를 실행하려고 합니다. 이를 (보조)라고 부르겠습니다. 단순화를 위해 스크립트는 다음과 같습니다.

#!/bin/bash

echo "This is the Remote Machine (Secondary)" > /tmp/test.txt
echo "---------------------------------------------------" >> /tmp/test.txt
echo "Test.sh scandir = $scandir" >> /tmp/test.txt
echo "Test.sh tmpdir = $tmpdir" >> /tmp/test.txt
echo "Test.sh CurrentDir = $CurrentDir" >> /tmp/test.txt
echo "---------------------------------------------------" >> /tmp/test.txt

다음 명령을 사용하여 호스트에서 원격으로 실행할 수 있습니다.

ssh <username>@192.168.1.20 'screen -S TestProcess -d -m ./test.sh'

스크립트가 예상대로 실행됩니다.

그러나 시스템 프로세스에서 스크립트 실행을 자동화할 때 다음 오류가 발생합니다.

Feb 21 06:20:23 Primary test.sh: Host key verification failed.#015

SSH 키를 생성하고 복사했습니다.

ssh-keygen -R 192.168.1.20
ssh-copy-id <username>@192.168.1.20

무엇이 문제일까요?

답변1

이는 클라이언트가 올바른 서버에 연결하고 있음을 아는 방법인 호스트 키와 관련이 있습니다. 이는 ssh-keygen사용자를 인증하기 위해 서버에서 생성한 키와는 아무런 관련이 없습니다.

"호스트 키 확인 실패"는 클라이언트가 이전에 호스트의 공개 키를 기록했지만 마지막 이후 공개 키가 변경되었음을 의미합니다. 이는 공격, 서버 재설치 또는 서버 IP 주소나 호스트 이름 변경으로 인해 발생할 수 있습니다. 저장된 호스트 키는 계정별로 저장되므로 계정에서 실행할 수 있지만 "시스템 프로세스"(아마도 다른 사용자)에서는 실행할 수 없는 이유를 설명합니다. 이 문제를 해결하려면 ssh-keygen -R 192.168.1.20시스템 프로세스를 실행하는 사용자로 실행하십시오. 그런 다음 해당 시스템 사용자로 한 번 실행하고 현재 호스트 키를 기록하라는 메시지가 표시되면 "yes"를 입력합니다.ssh [email protected] true

해당 옵션을 활성화했거나 StrictHostKeyCheckingSSH가 처음에 호스트 키 확인 메시지를 표시하지 않아 실패할 수도 있습니다. "호스트 키 확인 실패" 전에 이를 알리는 또 다른 메시지가 표시됩니다. 어느 쪽이든 이전과 마찬가지로 해당 시스템 사용자로 한 번 실행하고 메시지가 나타나면 "yes"를 입력하여 현재 호스트 키를 기록합니다. 키는 사용자의 홈 디렉터리 아래 파일에 저장됩니다.ssh [email protected] true.ssh/known_hosts

답변2

이해가가는 것 같네요. 표시된 자동화된 스크립트에 대한 SSH 로그를 확인하세요.

Feb 22 23:46:02 PiScanner scan.sh: debug1: Connecting to 192.168.1.20 [192.168.1.20] port 22.#015
Feb 22 23:46:02 PiScanner scan.sh: debug1: Connection established.#015
Feb 22 23:46:02 PiScanner scan.sh: debug1: permanently_set_uid: 0/0#015
Feb 22 23:46:02 PiScanner scan.sh: debug1: identity file /root/.ssh/id_rsa type 1#015
Feb 22 23:46:02 PiScanner scan.sh: debug1: Checking blacklist file /usr/share/ssh/blacklist.RSA-2048#015
Feb 22 23:46:02 PiScanner scan.sh: debug1: Checking blacklist file /etc/ssh/blacklist.RSA-2048#015
Feb 22 23:46:02 PiScanner scan.sh: debug1: **identity file /root/.ssh/id_rsa-cert type -1#015**
Feb 22 23:46:02 PiScanner scan.sh: debug1: identity file /root/.ssh/id_dsa type -1#015
Feb 22 23:46:02 PiScanner scan.sh: debug1: identity file /root/.ssh/id_dsa-cert type -1#015
Feb 22 23:46:02 PiScanner scan.sh: debug1: identity file /root/.ssh/id_ecdsa type -1#015
Feb 22 23:46:02 PiScanner scan.sh: debug1: identity file /root/.ssh/id_ecdsa-cert type -1#015
Feb 22 23:46:02 PiScanner scan.sh: debug1: Remote protocol version 2.0, remote software version OpenSSH_6.6.1p1 Ubuntu-2ubuntu2#015
Feb 22 23:46:02 PiScanner scan.sh: debug1: match: OpenSSH_6.6.1p1 Ubuntu-2ubuntu2 pat OpenSSH*#015

내가 키를 생성한 사용자의 로그에는

    debug1: Checking blacklist file /usr/share/ssh/blacklist.RSA-2048
    debug1: Checking blacklist file /etc/ssh/blacklist.RSA-2048
debug1: identity file /home/pi/.ssh/id_rsa-cert type -1
    debug1: identity file /home/pi/.ssh/id_dsa type -1
    debug1: identity file /home/pi/.ssh/id_dsa-cert type -1
    debug1: identity file /home/pi/.ssh/id_ecdsa type -1
    debug1: identity file /home/pi/.ssh/id_ecdsa-cert type -1
    debug1: Remote protocol version 2.0, remote software version OpenSSH_6.6.1p1 Ubuntu-2ubuntu2

루트 사용자가 생성한 키를 복사했습니다. sudo -i 실행 후 ~/.ssh 디렉토리

https://askubuntu.com/questions/497895/permission-denied-for-rootlocalhost-for-ssh-connection

ssh_config 파일의 PermitRootLogin yes가 작동하지 않았고 다른 오류가 발생했습니다.

관련 정보