このスクリプトが実行する作業は、リモートホストへの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