ホスト先にファイル同期するrsyncでssh: connect to host x.xxx.xx.xx port 2222: Invalid argument
エラーがでた。
このエラーは中々みることも無いと思うので記念に記す。
- 環境: CentOS 7.7.1908
rsyncはsshのオプションを付けるとホスト先のサーバにファイルを同期できる。
authorized_key
やrsyncの実行権限など設定が必要だがとても便利で何度か利用した。
そんな中、バックアップスクリプトのテストで以下のエラーが出た。
x.xxx.xx.xx
はホスト先のIPアドレス。
$ rsync -navu -e "ssh -p 2222" --rsync-path="sudo rsync" /path/to/localfile user@$x.xxx.xx.xx:/path/to/remotefile
ssh: connect to host x.xxx.xx.xx port 2222: Invalid argument
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: unexplained error (code 255) at io.c(226) [sender=3.1.2]
どうやらsshで不正な引数があるようです。 検索しても該当する記事は無く、sshができることを確かめたりrsyncのオプションが悪いのか、firewalldやその他のネットワークが原因かと散々悩んでいた。
結局、ホスト名のところに{user}@${hostname}`と変数を使っていた名残があったためだ。
SSHでも同じエラーが出るか確かめてみる
# $ + ipadress
$ ssh -p 2222 user@$x.xxx.xx.xx
ssh: connect to host x.xxx.xx.xx port 2222: Invalid argument
# ハイフン
$ ssh -p 2222 user@---
ssh: Could not resolve hostname ---: Name or service not known
# $ のみ
$ ssh -p 2222 user@$
ssh: Could not resolve hostname $: Name or service not known
# ! + ipadress
$ ssh -p 2222 user@!x.xxx.xx.xx
ssh -p 2222 user@ls /home.203.0.2
ssh: Could not resolve hostname ls: Name or service not known
# # + ipadress
$ ssh -p 2222 user@#x.xxx.xx.xx
ssh: Could not resolve hostname #x.xxx.xx.xx: Name or service not known
user@$x.xxx.xx.xx
とするとInvalid argument
が出るが、他は大体Name or service not known
となる。
$x.xxx.xx.xx`で変数だと勘違いしたのだろうか?
このエラーに出会う人はほぼいないと思うけど、助けになったのなら幸いです。
【TypeScript】Jestでdescribeなどの関数がnot findになってるのを解消する
TypeScriptテストエラー解消schedule2021-10-10
【TypeScript】JestでインポートしたモジュールがCannot find moduleとなるエラー
TypeScriptテストエラー解消schedule2021-10-10