sshpassとrsyncを使用して指紋を許可する

sshpassとrsyncを使用して指紋を許可する

rsyncを使用してファイルをデバイスにコピーしています。

sshpass -p <password> rsync -avzP <file> <user>@<IP address>:<folder>

以前はこの方法はうまくいきましたが、新しいデバイスにコピーしてみましたが、次のような結果が出ました。

Host key verification failed.
rsync error: unexplained error (code 255) at rsync.c(703) [sender=3.2.3]

私は削除しようsshpassとした結果、rsync -avzP <file> <user>@<IP address>:<folder>次のようになりました。

The authenticity of host '<IP address>' can't be established.
<Name> key fingerprint is SHA256:<hex>.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])?

入力するとyes問題が解決し、元のコマンドを実行できました。しかし、1つのコマンドでこれをどのように実行できますかsshpass

答え1

またはStrictHostKeyCheckingに設定すると、新しいホストがファイルに自動的に追加されます。デフォルト値はです。accept-newno~/.ssh/known_hostsask

ホストキーが変更されると、次に始まる警告メッセージが表示されます。

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.

接続を許可するように設定されている場合no。使用時にaccept-newホストキーの変更は許可されておらず、まず問題のある行を削除する必要がありますknown_hosts

sshpass -p <password> rsync -avzP -e 'ssh -o StrictHostKeyChecking=accept-new' <file> <user>@<IP address>:<folder>

すべてのホストのデフォルト設定を上書きするには、次の場所にエントリを追加できます~/.ssh/config

Host *
    StrictHostKeyChecking accept-new

答え2

known_hostsこのパスにあるファイルを削除する必要があります。~/.ssh/known_hosts

この"-o StrictHostKeyChecking=no"オプションを使用すると、ホストキーの確認プロンプトをバイパスし、新しいホストキーをファイルに自動的に追加できますknown_hosts。更新されたコマンドは次のとおりです。

sshpass -p <password> rsync -o StrictHostKeyChecking=no -avzP <file> <user>@<IP address>:<folder>

関連情報