scp 명령을 사용하여 로컬 우분투 시스템에서 원격 우분투 시스템으로 디렉터리를 복사하려고 합니다.

scp 명령을 사용하여 로컬 우분투 시스템에서 원격 우분투 시스템으로 디렉터리를 복사하려고 합니다.

이 스크립트가 수행하는 작업은 원격 호스트에 대한 SSH 연결을 설정한 다음 명령을 사용하여 scp디렉터리를 /home/desktop/Documents대상 디렉터리에 복사하는 것입니다./home/haca/desktop

스크립트:

#!/bin/bash

SCRIPT="cd Desktop; pwd;  echo -e 'PASSWORD' | sudo -S scp -r /home/desktop/Documents/ [email protected]:/home/haca/desktop"

HOSTS=("192.168.0.118")
USERNAMES=("haca")
PASSWORDS=("******")
for i in ${!HOSTS[*]} ; do
     echo ${HOSTS[i]}
     SCR=${SCRIPT/PASSWORD/${PASSWORDS[i]}}
     sshpass -p ${PASSWORDS[i]} ssh -l ${USERNAMES[i]} ${HOSTS[i]} "${SCR}"

done

분명한 이유로 이 스크립트에서는 비밀번호를 생략했습니다.

왜 작동하지 않는지 잘 모르겠습니다. 스크립트를 실행할 때 받은 출력은 다음과 같습니다.

192.168.0.118
/home/haca/Desktop
[sudo] password for haca: Host key verification failed.
lost connection

어떤 지침이라도 대단히 감사하겠습니다.

답변1

Linux 호스트가 처음 부팅되면 일반적으로 SSH "호스트 키" 세트가 생성됩니다. 호스트에 연결하면 호스트는 해당 키를 SSH 클라이언트로 보냅니다. 귀하의 컴퓨터가 키를 인식하지 못하기 전에 이 호스트와 통신한 적이 없다면 클라이언트는 다음과 같은 경고를 표시합니다.

The authenticity of host 'irobot (192.168.1.1)' cant be established.
ED25519 key fingerprint is SHA256:di+nebThBUTmW57O8sMVtP3X2YGenftovtoPRogvBvI.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? 

"예"를 선택하면 호스트 키가 파일에 추가됩니다.

$HOME/.ssh/known_hosts

이렇게 하면 다음에 해당 호스트에 연결할 때 호스트 키를 다시 묻지 않고 호스트가 인식되고 SSH가 연결됩니다. 실수:

Host key verification failed.

이는 호스트 시스템에 호스트 키가 설치되어 있지 않기 때문입니다. 이를 해결하는 방법은 여러 가지가 있습니다. 가장 쉬운 방법은 SSH가 컴퓨터에 호스트 키를 저장하라는 메시지를 표시하므로 단계를 수동으로 실행하는 것입니다. 이후 자동화는 문제 없이 실행되어야 합니다.

또는 ssh-keyscan유틸리티를 사용하여 호스트 키를 저장할 수 있습니다. 예를 들면 다음 과 같습니다.

ssh-keyscan SOME_HOSTNAME >> $HOME/.ssh/known_hosts

관련 정보