1. はじめに
rsyncを使ってリモートサーバーからバックアップデータを取得していたのだが何が原因なのか、今まで普通に動いていたのが動かなくなっていたので調査。結果の覚書。
2. 確認を行ったコマンドと結果
実行を行ったコマンドは以下の通り。
rsync -auz -e \"ssh -i ~/aaa.pem\" user@host:remotedir/remotefile localdir
結果は以下の通り。
Unexpected remote arg: user@host:remotedir/remotefile
rsync error: syntax or usage error (code 1) at main.c(1201) [sender=3.0.6]
下記のコマンドだとssh接続できるので鍵やサーバーに問題はなさそう。
ssh -i ~/aaa.pem user@host
3. 更なる検証
ssh の部分をシングルクォーテーションで囲むとどうなるか検証。
rsync -auz -e 'ssh -i ~/aaa.pem' user@host:remotedir/remotefile localdir
以下のエラーが発生。
Connection to host closed by remote host.
rsync: connection unexpectedly closed (0 bytes received so far) [receiver]
rsync error: unexplained error (code 255) at io.c(600) [receiver=3.0.6]
シングルクォーテーションだとダメっぽい?
いろいろと試した結果、rsyncのバージョンを[Receiver=3.1.3] だとシングルクォーテーションで取得できました。
バージョン違いによる問題?もしくはOSが古すぎたことが原因か?
4. SSH のバージョンを上げずに解決する方法
IPQoSの設定を追加することで解決。
rsync -auz -e \"ssh -o IPQoS=0 -i ~/aaa.pem\" user@host:remotedir/remotefile localdir
ネットの環境が変わったことで発生したエラーだったようです。
5. まとめ
今まで普通に動いていたrsyncが動かなくなったので調査した結果の覚書。
何もしていないのに突然動かなくなるわけはなく、ネット環境の変化が原因だったようです。
今回の記事も、Github Copilot が7割くらい書いてくれました。
A. 参考サイト
IPoEなどの回線で、sshでログインはできるのにrsyncが通らない場合の対処。
IPQoSの設定を変えたらDS-Lite接続でもSSHができるようになった
コメント