이 스크립트가 수행하는 작업은 원격 호스트에 대한 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