以前投稿したscpコマンドで、一寸大きいファイルを、Webサーバーに、ターミナルから送る方法を記述しましたが、その後、鍵認証を使った環境で、うまく実行出来ませんでした。
今回改めてscpコマンドを使って、鍵認証でssh接続する環境下でのファイル転送できましたので記録しました。
scpコマンドで、ubuntu端末からファイルを転送
~$ scp -i .ssh/[鍵の名称] /home/[ユーザー名]/[フォルダ名]/[ファイル名] [user_name]@[IPアドレス]:/home/[ユーザー名]/
gorimepreset.jpg 100% 528KB 10.2MB/s 00:00 <実行結果>
上記の、scpコマンドの所は2行に渡っていますが、1行で記述します。送りたいファイルの記述は、鍵ファイルの指定部の後に、半角スペースを入れて指定します。
なお、サーバーは鍵認証ファイル名だけで接続するようになっている場合はパスワードは聞いてきません。
サーバーからクライアントにコピー
サーバーと同じネットワーク上のクライアントに、ファイルを転送する場合は
# scp sql.png [user_neme]@192.168.12.8:/home/[user_name]/
[user_name]@192.168.12.8’s password: ←パスワードを入力
sql.png 100% 1221 120.1KB/s 00:00
# exit
一旦、サーバーからログアウトし、クライアントPCに戻り、ファイルが来ている事を確認します
$ cd /home/[user_neme]/
$ ll
-rw-r–r– 1 [user_name] [groupe_name] 1221 12月 25 16:20 sql.png
上記のように、ファイルがクライアントPCに来ている事が分かります
Webサーバーからのファイルのダウンロード
前記のように、同じネットワークにある、サーバーから、クライアントPCにファイルを送れますが、一般的にはサーバーとクライアントPCは別のネットワークにあります。この場合はWgetコマンドを使いましょう
Webサーバーから、別のネットワーク上にあるローカルPCには、scpコマンドは使えません。サーバーからローカルPCには接続が出来ないため、別の方法を使います。(同じネットワーク内の場合はscpが使えますが・・・)
一番簡単なのは、ダウンロードしたいファイルを、一旦Webルートにコピーし、ファイルの所有者をHTTPサービスのapacheに変更し、ローカルから以下のwgetコマンドでダウンロードします。
~$ wget https://east19-mikas.com/file.png
–2021-12-22 14:28:37– https://[ドメイン名]/file.png
east19-mikas.com (east19-mikas.com) をDNSに問いあわせています… 192.168.12.200
east19-mikas.com (east19-mikas.com)|192.168.12.200|:443 に接続しています… 接続しました。
HTTP による接続要求を送信しました、応答を待っています… 200 OK
長さ: 1557 (1.5K) [image/png]
`file.png’ に保存中
file.png 100%[===================>] 1.52K –.-KB/s 時間 0s
2021-12-22 14:28:37 (156 MB/s) – `file.png’ へ保存完了 [1557/1557]
以上、コマンドでファイルを転送する方法についての一方法です。アプリのWinSCPを使う方法もありますが・・・