Linux

scpコマンドでファイルを送信する方法【linuxコマンドを現役エンジニアが解説】

こんにちは、インフラエンジニアのryuです。

今回は、scpコマンドを使用してファイルを送信する方法を解説します。scpとは、サーバー間でSSHのプロトコルを使用して安全にファイルを送信するコマンドです。SSHサーバーを構築して、scpコマンドを使ってみましょう。オプションやコマンド失敗時の対処方法も併せて解説します。

scpコマンドでファイルを送信する方法

「サーバー間でファイルを安全に転送する方法は・・・?」

「scpコマンドを使いましょう」

サーバー間でファイルを転送したいけど、どうやったらいいの?

と、お困りの方のために、今回は”scp”コマンドについて解説したいと思います。

scpコマンドとは、sshプロトコルを使用してファイルを転送するコマンドです。コマンド1つでファイルの転送ができるため、とても便利なコマンドです。

今回はscpコマンドの使い方を1から解説します。内容は以下の通りです。

初心者の方でも分りやすく1から解説します。では、早速やってきましょう!

SSHサーバーを準備する

まず、scpコマンドを使うための準備をします。SSHサーバーの構築です。

先ほど、scpコマンドとはsshプロトコルを使用してファイルを転送すると、いいました。まずは、SSHサーバーの構築から行います。

SSHサーバーの構築方法

SSHサーバーの構築方法は簡単です。linuxにパッケージをインストールするだけです。

SSHサーバーはファイルを転送する先のサーバーにインストールして下さい。

こちらのコマンドでインストールできます。

apt-get install ssh
SSHサーバーの構築

SSHサーバーがインストールできたら、sshコマンドを使用してアクセスできるか確認しましょう。

ssh user@192.168.1.1
ssh [ユーザー名]@[IPアドレス]

SSHサーバーは様々な設定ができますが、今回はユーザーで認証できるまでのデフォルト設定です。

SSHサーバー構築の詳しい内容はこちらの記事で紹介しています。

scpコマンドの使い方

では、ここからが本題です。

scpコマンドを使用してファイルを送信しましょう。

scpコマンドの文法

scpコマンドの使い方は以下の通りです。

scp test.txt user@192.168.1.1:/home/user/test.txt
scp [コピー元のファイル] [コピー先のファイル]

ファイルの指定方法は、リモート先の場合、ファイルの先頭に”[ユーザー名]@[IPアドレス]:“を付けます。このユーザ名とIPアドレスはSSHのユーザー認証で使う情報です。

こちらのコマンドでは、自分のPCから、相手先[192.168.1.1]のサーバーにtest.txtファイルを転送する動作になります。

では、相手先のファイルから自分のPCにコピーする場合はどのようにしたら良いのでしょうか?答えは、送信元のファイル名にユーザー名とIPアドレスを付けることです。

scp  user@192.168.1.1:/home/user/test.txt ./

ちなみに、”./”は現在自分のいるディレクトリ(カレントディレクトリ)を指定しています。カレントディレクトリに、相手先のtest.txtファイルをコピーします。

linuxでscpコマンドを使ってみる

では、実際にlinuxでscpコマンドを使ってみましょう。

まず、”test.txt”ファイルを作成しましょう。

touch test.txt

このファイルを転送先のサーバーにscpコマンドをつかってコピーします。

scp test.txt user@192.168.1.1:/home/user/test.txt

scpコマンドの実行結果

こちらの画像では、自分自身にSSHサーバーを構築しています。このアドレスを転送先に変えれば、転送先にファイルを送ることができます。

SCPコマンド実行時にエラーが出た場合の対処法

コマンド実行時以下のようなエラーが出たら、SSHサーバーの構築に失敗しているか、転送先に通信ができていません。

ssh: connect to host 192.168.54.1 port 22: Resource temporarily unavailable
lost connection

もう一度SSHの設定を見直してみましょう。もし、修復できない場合はSSHサーバーの再インストールも検討してみましょう。

linuxからwindowsにscpコマンドでファイルン転送する

次にlinuxからwindowsにscpコマンドでファイル転送する方法です。

WindowsにSSHサーバーをインストールすればよいですが、設定が面倒なので、WindowsにWSLをインストールして、そこにSSHサーバーをlinuxと同じように設定しましょう。

Windowsの仮想サーバーにlinuxを構築し、そこに向けてファイル転送を行います。

WSLでlinuxサーバーを構築する方法はこちらの記事で解説しています。

【初心者向け】linuxを簡単にインストールする方法とは?【WSLで最速で構築】 こんにちは、インフラエンジニアのryuです。 今回は、初心者向けにlinuxを簡単にインストールする方法を解説します。windo...

WSLを構築したら、そこにSSHサーバーを構築して、scpコマンドでファイル転送してみましょう。手順は先ほど解説した通りです。

scpコマンドのオプション解説

scpコマンドには、様々なオプションがあります。

参考程度に載せておくので興味ある方は、いろいろと試してみてください。

-C通信を圧縮します。
-i 秘密鍵ファイル秘密鍵ファイル(identityファイル)を指定します。初期設定は、SSHバージョン1は、~/.ssh/identity、SSHバージョン2は、~/.ssh/id_rsa と ~/.ssh/id_dsa。
-P ポート番号ポート番号を指定します。
-pコピー元の更新時間とモードを維持します。
-rディレクトリ内を再帰的にコピーします。
-1SSHのプロトコルバージョン1を使用します。
-2SSHのプロトコルバージョン2を使用します。
-4IPv4を使用します。
-6IPv6を使用します。

scpコマンドの仕組みとは?

scpコマンドは、SSHというプロトコルを使用して安全にファイル転送を行っています。その仕組みを簡単に解説したいと思います。

SCPで使われているSSHとは?

では、sshプロトコルとは何なのでしょうか?知らない方のために少し解説します。

SSHとは、Secure Shell(セキュアシェル) の略でサーバーを遠隔で操作するものです。暗号化技術で安全に操作することができます。

つまり、SSHを使うことで暗号化されて、遠隔のサーバーを操作できるということです。そのため、ファイル転送も可能になります。

scpはなぜ安全なのか?

scpはなぜ安全にファイルを転送できるのかというと、公開鍵暗号化方式で通信を暗号化しているからです。鍵を使用して暗号化することで、鍵を持っていない人は、暗号化されたデータを見ることができなくなります。

公開鍵暗号方式の詳しい説明は下記の記事でしているので、興味のある方はご覧ください。

【初心者向け】公開鍵暗号方式をわかりやすく解説!

【図解】共通鍵暗号方式の仕組みとは?【初心者向けに詳しく解説】

scpコマンドまとめ

最後にまとめです。

scpコマンドとはSSHプロトコルを使用して安全にファイルを送信するlinuxのコマンドでした。

使い方は、SSHサーバーを構築して、以下のようなコマンドを実行します。

scp test.txt user@192.168.1.1:/home/user/test.txt
scp [コピー元のファイル] [コピー先のファイル]

scpコマンドはファイルのやり取りをする際に便利なコマンドなので、ぜひ使い方をマスターしてみましょう。

ファイルのやり取りについては、、共有フォルダを準備してするやり方もあります。こちらの記事も参考にしてください。

以上で終わります。ありがとうございました。

About me
大手メーカのIT部門→上場ベンチャーでフルスタックエンジニアやってます。エンジニア歴は8年目。 サーバ、ネットワーク、セキュリティ、クラウドについて投稿します。 AI、ARも勉強中です! youtubeでも技術ネタを発信していきます。↓のアイコンよりご覧ください!

UdemyでIT講座をチェック!

  • セールだと1500円前後!
  • 無料サンプル講義動画・無料講義動画あり!
  • 気に入らなければ30日間返金保証!