scp コマンドでポート指定をするには
scp -P [port]
大文字の P の後にポート番号を続けます。
http みたいにポート番号を指定できないか http://example.com:8080/ と思ったけど無理だった。
サンプル
### local file to remote scp -P 2222 ./2022-04-20.tgz root@example.tld:/path/to/dir/ #### remote file to local scp -P 2222 root@example.tld:/path/to/file backup.tgz
リモートtoリモートはない。なので、ポートは常に一個ですね。
よく間違える(rsync/ssh/scp)
サーバーの listen ポートの設定はポートフォワーディングをしてたり、SSH踏み台を使ってない限り、ヤッパリめんどくさいのです。
SSH の場合
ssh 192.168.1.1:2222
SCPの場合
scp 192.168.1.1 -P 2222
rsync の場合
rsync --port 2222 192.168.1.1
全部違うの本当に困る。
scp の場合の特徴
じつは、他にポート番号を指定するオプションがあったりします。
scp には SSH オプションというのがあり
scp -o 'Port 2222' 192.168.1.1
このようにもかけます。
scp の場合の注意点
引数の順番が大切です。
scp -P 2222 local_file 192.18.1.1:~/path
scp でポート指定するとき引数の順番を適当にすると -P は解釈されません。
これはNG
scp local_file 192.18.1.1:~/path -P 2222 scp local_file -P 2222 192.18.1.1:~/path
ただしくはこう
ssh -P 2222 $LOCAL $SERVER_IP:$SERVER_PATH
この辺のややこしさも。これもSCPがあまり使われつかわれてない理由なのかもしれませね。(あくまでわたしの身近なところだけですけどあまり使われない)
port のオプションは本当によく忘れてます。
2020-04-18
自分で後で見るときに検索にかからないので、記述を大幅に追記した。