一部のファイルをリモートコンピュータに同期する必要があるスクリプトがあります。 rsyncコマンドは次のとおりです。
rsync -avz -e 'ssh -vv -o IdentitiesOnly=yes -i /data/credentials/rsync2.key' \
--rsync-path="mkdir -p ~/new_data/12345/ && rsync" \
/data/new_data/ some_user@$REMOTE_HOST_IP:~/new_data/12345/
スクリプトの出力は次のとおりです。
... debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) 送信 debug1: SSH2_MSG_KEX_DH_GEX_GROUP が必要です。 debug2:dh_gen_key:プライバシーキービットセット:134/256 デバッグ2:ビット設定:505/1024 debug1: サーバーホストキー: RSA XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX debug1: read_passphrase: 開けません。 /dev/tty: そのデバイスまたはアドレスがありません。 ホスト鍵の検証に失敗しました。 rsync:接続が予期せず終了しました(今まで0バイト受信しました)[発信者] rsyncエラー:io.c(605)[sender = 3.0.9](コード255)で説明できないエラーが発生しました。
SSHがキーにパスワードを使用しようとしているようです。いいえ、キーにはパスワードは必要ありません。また、/dev/tty
私のスクリプトがメッセージの存在を確認したので、問題のメッセージが完全に正確ではないと確信しています/dev/tty
(ls -l
上記のようにcrw-rw-rw- 1 root root 5, 0 Feb 23 19:37 /dev/tty
:)。また、キーを使用してSSH経由でリモートホストに手動で接続できるため、キーファイルが有効であることもわかります。
ここで1つの問題は、私のスクリプトがDockerコンテナで実行されており、これがrsyncとsshにどのような影響を及ぼすのかわかりません。