1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【scpコマンドの実行場所】基本と失敗例まとめ

Last updated at Posted at 2025-12-01

はじめに

scpコマンドをどこから実行すれば良いのか分からず、

  • リモート側 ➡ ローカル側に転送するときはリモートから
  • ローカル側 ➡ リモート側に転送するときはローカルから

というように、「コピー元にいる側から実行するもの」と思い込み、失敗してしまうことがありました。
理論上は下の図の通り、計4通りの方法が実行可能です。しかし、実際は①と②のようにローカルから実行する場合が圧倒的に多いです(③と④が非推奨となる理由は後述)。
image.png
※黒塗りされているところが実行場所


本記事では一般的に使われる①と②の実行例と、③と④の失敗例についてまとめます。

scpコマンドとは

SSHプロトコルを利用して、リモートホスト-ローカルホスト間、またはリモートホスト同士でファイルを安全にコピー(転送)するコマンドです。

基本的な構文

  • ローカルからリモート
scp [コピー元ファイルパス] [ユーザー名]@[IPアドレス]:[リモートコピー先ディレクトリ]
  • リモートからローカル
scp [ユーザー名]@[IPアドレス]:[コピー元ファイルパス] [ローカルコピー先ディレクトリ]

オプションで-i(秘密鍵)-P(ポート番号の指定)などを指定するときは、scpの後ろに指定します。

コマンド実践例

実行にあたり、まずは以下を準備しました。

  • ローカルのC:\work直下にlocal_file1.txt
 C:\work のディレクトリ

2025/11/20  09:49    <DIR>          .
2025/11/18  12:03                15 local_file1.txt
               1 個のファイル                  15 バイト
               1 個のディレクトリ  317,677,858,816 バイトの空き領域
  • リモートの/home/miz/work直下にremote_file1.txt
miz@ubuntu:~/work$ pwd
/home/miz/work
miz@ubuntu:~/work$ ls
remote_file1.txt

①ローカルのファイルをリモートにコピーする(ローカルから実行)

ローカルに準備したlocal_file1.txtをリモートにコピーします。

C:\work>scp C:/work/local_file1.txt miz@<IPアドレス>:/home/miz/work/
local_file1.txt                                                                       100%   15     7.3KB/s   00:00

C:\work>

リモートからlocal_file1.txtが転送されていることが確認できます。

miz@ubuntu:~/work$ ls
local_file1.txt  remote_file1.txt

②リモートのファイルをローカルにコピーする(ローカルから実行)

リモートに準備したremote_file1.txtをローカルにコピーします。

C:\work>scp miz@<IPアドレス>:/home/miz/work/remote_file1.txt C:/work
remote_file1.txt                                                                      100%   13     3.2KB/s   00:00

C:\work>

ローカルからremote_file1.txtが転送されていることが確認できます。

 C:\work のディレクトリ

2025/11/20  09:55    <DIR>          .
2025/11/18  12:03                15 local_file1.txt
2025/11/20  09:55                13 remote_file1.txt
               2 個のファイル                  28 バイト
               1 個のディレクトリ  317,664,489,472 バイトの空き領域

【失敗例】③④ローカル ⇄ リモート(リモートから実行)

はじめに、非推奨と述べた③④を実行してみます。
構文は、以下のようになります。

  • ローカルからリモート
scp <ローカルユーザー名>@<ローカルIP>:[コピー元ファイルパス] [リモートコピー先ディレクトリ]
  • リモートからローカル
scp [コピー元ファイルパス] <ローカルユーザー名>@<ローカルIP>:[ローカルコピー先ディレクトリ]

③ローカルのファイルをリモートにコピーする(リモートから実行)

miz@ubuntu:~/work$ scp <ローカルユーザー名>@<ローカルIP>:/mnt/c/work/local_file2.txt /home/miz/work/
ssh: connect to host <ローカルIP> port 22: Connection timed out

Connection timed outが出て失敗

④リモートのファイルをローカルにコピーする(リモートから実行)

scp /home/miz/work/remote_file2.txt <ローカルユーザー名>@<ローカルIP>:/mnt/c/work/
ssh: connect to host <ローカルIP> port 22: Connection timed out

➡ 同じくConnection timed outが出て失敗


③④でリモートからscpコマンドを実行したときに失敗した理由は、ローカル側(Windows)がssh接続を受け付ける設定になっていないためです。scpコマンドはSSHプロトコルを利用してファイルを転送するため、ssh接続できる状態である必要があります。しかし、Windowsではデフォルトでsshサーバーが無効になっており、設定をしない限りリモート側から Windowsへssh接続することができません。 その結果、今回のように Connection timed out というエラーが発生してしまうのです。

まとめ

ローカル➡リモート、リモート➡ローカルのどちらの転送であっても、基本的にscpコマンドはローカルから実行する方が一般的で簡単です。

参考

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?