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でも技術ネタを発信していきます。↓のアイコンよりご覧ください!
Linuxを実践的に学べるInfraAcademy

InfraAcademyはLinuxをコマンドを打ちながら体系的に学ぶことができる学習サイトです。

以下のような方におすすめです。
Linuxを使いこなせるようになりたい方
・インフラエンジニアを目指す方
・LPICを取得したい方

Linuxの初級編から中級編まで学習できます!!

学習を始める

RELATED POST