WinSCPとは?──安全なファイル転送を支えるツールの正体

解析

サーバーを管理していると、「ローカルのファイルをサーバーに送りたい」「サーバー上のログを手元に落としたい」という場面が必ず訪れます。そのとき最初に頭に浮かぶのがWinSCP(ウィン・エスシーピー)です。

WinSCPは、Windows向けに無償公開されているオープンソースのSFTP・SCP・FTPクライアントです。2000年にチェコのプログラマーMartin Přikrylによって開発が始まり、20年以上にわたって世界中のシステム管理者・開発者・セキュリティエンジニアに愛用されてきました。ダウンロード累計は2億回以上(公式サイトより)という、まさに業界標準のツールです。

名前の由来は「Windows Secure CoPy」の略。「Secure」という言葉が入っている通り、通信の暗号化を大前提に設計されているところがこのツールの最大の特徴です。

📌 この記事でわかること
・WinSCPが「安全」である理由(プロトコルの違い)
・公式サイトからの安全なダウンロード方法
・インストールと初期設定の手順
・サーバーへの接続・ファイル転送の基本操作
・セキュリティを高める実践的な設定Tips
・よくあるトラブルと対処法


  1. なぜ「普通のFTP」ではダメなのか?プロトコルの安全性を比べる
    1. FTPの致命的な欠点──通信が「丸見え」になる
    2. WinSCPが対応する安全なプロトコル
  2. WinSCPのダウンロード──公式サイトから安全に入手する
    1. 公式ダウンロードページへのアクセス
    2. インストーラーの種類を選ぶ
    3. ダウンロードしたファイルのハッシュ確認(推奨)
  3. インストール手順──画面に沿って進めるだけ
    1. ステップ1:ライセンス確認
    2. ステップ2:インストールの種類を選択
    3. ステップ3:初期ユーザーインターフェースの選択
    4. ステップ4:インストール実行
  4. 初回起動と接続設定──「サイトマネージャー」を使いこなす
    1. 新しい接続先(サイト)を作成する
    2. パスワード認証よりも安全な「公開鍵認証」を使おう
    3. 初回接続時のホスト鍵確認
  5. 基本的な使い方──ファイル転送の操作をマスターする
    1. ファイルのアップロード(ローカル → サーバー)
    2. ファイルのダウンロード(サーバー → ローカル)
    3. ファイルの削除・リネーム・パーミッション変更
    4. ディレクトリの同期(Synchronize)
    5. テキストエディターで直接編集
  6. 便利な機能をさらに活用する
    1. 端末エミュレーター(SSHターミナル)との統合
    2. タスクの自動化(コマンドラインスクリプト)
    3. 保存済みセッションへのショートカット
    4. バックグラウンド転送キュー
  7. セキュリティをさらに高める実践的な設定Tips
    1. Tips 1:マスターパスワードを設定する
    2. Tips 2:ホスト鍵を定期的に確認・管理する
    3. Tips 3:秘密鍵にはパスフレーズを必ず設定する
    4. Tips 4:不要な機能を無効化する
    5. Tips 5:接続ログを有効にして記録を残す
    6. Tips 6:Windowsファイアウォールと連携する
  8. よくあるトラブルと解決方法
    1. 「Connection refused」が表示される
    2. 「Network error: Connection timed out」が表示される
    3. 「Authentication failed」が表示される
    4. 「Host key has changed」警告が表示される
    5. 日本語ファイル名が文字化けする
  9. まとめ──WinSCPはセキュアなサーバー管理の入口

なぜ「普通のFTP」ではダメなのか?プロトコルの安全性を比べる

WinSCPを理解するうえで、まず「なぜ昔ながらのFTPを使ってはいけないのか」を押さえておくことが重要です。ここはセキュリティブログらしく、少しだけ技術的な話をします。

FTPの致命的な欠点──通信が「丸見え」になる

FTP(File Transfer Protocol)は1971年に定義された非常に古いプロトコルです。当時のインターネットは研究機関同士をつなぐ小さなネットワークであり、「誰かが通信を盗み見る」という脅威はほとんど想定されていませんでした。

その結果、FTPはIDとパスワード、そして転送するファイルのデータをすべて平文(暗号化なし)でネットワーク上に流します。Wiresharkのようなパケットキャプチャツールを使えば、同じネットワーク上にいる第三者がパスワードもファイル内容も簡単に読み取れてしまいます。

たとえばカフェのWi-Fiや、社内の共有ネットワークでFTPを使ってサーバーにログインした場合、そのパスワードは傍受される可能性があります。これは現代のセキュリティ要件においては完全に「アウト」です。

WinSCPが対応する安全なプロトコル

WinSCPはFTPの代わりに、以下のプロトコルをサポートしています。

プロトコル暗号化主な用途特徴
SFTPあり(SSH)ファイル転送全般最も一般的。SSHの上でファイル操作のAPIを提供する
SCPあり(SSH)ファイルコピーシンプルで高速。ただしディレクトリ一覧取得などの操作は限定的
FTPSあり(TLS/SSL)FTPの暗号化版既存のFTPサーバーをTLSで保護したもの
WebDAVあり(HTTPS)Webサーバー経由の操作HTTPSベースのファイル管理

特にSFTP(SSH File Transfer Protocol)はLinuxサーバーに標準搭載のOpenSSHと組み合わせて使えるため、追加ソフトウェアなしにすぐ使える点が大きな強みです。普段からSSHでサーバー接続している方は、そのまま同じ認証情報でWinSCPから安全にファイル転送できます。

⚠️ 注意:FTP over TLS(FTPS)とSFTPは別物です
名前が似ていて混乱しやすいですが、FTPSはFTPをTLSで暗号化したもの、SFTPはSSHをベースにした全く別のプロトコルです。ポート番号もFTPSは990番(または21番)、SFTPは22番(SSH)と異なります。サーバー側でどちらが有効かを確認してから接続設定をしましょう。


WinSCPのダウンロード──公式サイトから安全に入手する

ソフトウェアをダウンロードする際は、必ず公式サイトから入手することが鉄則です。検索エンジンで「WinSCP ダウンロード」と検索すると、広告やサードパーティのダウンロードサイトが上位に来ることがあります。これらのサイトはマルウェアが同梱されたインストーラーを配布しているリスクがあるため、絶対に使わないでください。

公式ダウンロードページへのアクセス

公式サイトのURLは https://winscp.net/ です。ブラウザのアドレスバーに直接入力してアクセスするか、アドレスバーの鍵アイコン(HTTPS)を確認してから操作してください。

トップページの「Download WinSCP」ボタンをクリックするとダウンロードページに移動します。2025年時点での最新バージョンは WinSCP 6.x系 です(バージョンは定期的に更新されます。公式サイトで最新版を確認してください)。

インストーラーの種類を選ぶ

ダウンロードページには複数の選択肢があります。

  • Installation package(インストーラー版):通常の利用におすすめ。スタートメニューへの登録、アンインストーラーの作成など、Windowsに正式にインストールされます。
  • Portable executables(ポータブル版):インストール不要で、USBメモリから実行することも可能。設定が実行ファイルと同じフォルダに保存されます。持ち運びたい場合や、管理者権限のないPCで使いたい場合に便利です。

一般的な用途ではインストーラー版(Installation package)を選択しましょう。

ダウンロードしたファイルのハッシュ確認(推奨)

セキュリティをより重視するなら、ダウンロードしたファイルが改ざんされていないかハッシュ値で確認することをおすすめします。公式サイトのダウンロードページには SHA-256 などのハッシュ値が掲載されています。

PowerShellで確認する場合は以下のコマンドを使います。

# ダウンロードしたファイルのSHA-256ハッシュを計算する
Get-FileHash C:\Users\あなたのユーザー名\Downloads\WinSCP-X.X.X-Setup.exe -Algorithm SHA256

表示されたハッシュ値と公式サイトに掲載されている値が一致すれば、ファイルは正規のものです。一致しない場合は絶対に実行せず、再ダウンロードしてください。


インストール手順──画面に沿って進めるだけ

ダウンロードしたインストーラー(WinSCP-X.X.X-Setup.exe)をダブルクリックして実行します。Windowsのユーザーアカウント制御(UAC)のダイアログが表示されたら「はい」をクリックしてください。

ステップ1:ライセンス確認

ライセンス条項(GNU GPL v3)が表示されます。内容を確認して「同意する(Accept)」をクリックします。WinSCPは完全に無料で商用利用も可能なオープンソースソフトウェアです。

ステップ2:インストールの種類を選択

「Typical installation(標準インストール)」と「Custom installation(カスタムインストール)」の2択が表示されます。通常は「Typical installation」で問題ありません。

カスタムインストールを選ぶと、インストールコンポーネントや追加機能(PuTTYの同梱など)を選択できます。後ほど紹介する「PuTTY連携」を使いたい場合はここでPuTTYを同梱するか確認しましょう。

ステップ3:初期ユーザーインターフェースの選択

「Commander interface(コマンダー形式)」と「Explorer interface(エクスプローラー形式)」の選択があります。

  • コマンダー形式:画面を左右に分割し、左がローカル、右がリモートを表示します。Total CommanderやFFFTPに慣れているユーザーに馴染みやすいレイアウトです。
  • エクスプローラー形式:Windowsのエクスプローラーに似たシングルパネル表示。リモートサイドのみを表示します。

サーバー管理の現場ではコマンダー形式が一般的です。ドラッグ&ドロップで左右間でファイルをやり取りできるため直感的に操作できます。どちらを選んでもあとから設定で変更可能です。

ステップ4:インストール実行

「Install」ボタンをクリックするとインストールが開始されます。数十秒程度で完了し、「Finish」ボタンが表示されたらインストール完了です。「Launch WinSCP」にチェックを入れたままFinishをクリックすると、そのままWinSCPが起動します。


初回起動と接続設定──「サイトマネージャー」を使いこなす

WinSCPを起動すると、最初に「ログインダイアログ(Login)」が表示されます。これはサイトマネージャーとも呼ばれ、接続先のサーバー情報を管理する画面です。

新しい接続先(サイト)を作成する

「New Site」ボタンをクリックすると、右側に接続情報の入力フォームが表示されます。各フィールドの意味を以下で説明します。

フィールド説明入力例
File Protocol使用するプロトコルSFTP(推奨)
Host name接続先サーバーのIPアドレスまたはホスト名192.168.1.100 または example.com
Port numberポート番号(SFTPのデフォルトは22)22
User nameサーバーのログインユーザー名admin や ubuntu など
Passwordパスワード(パスワード認証の場合)サーバーのパスワード

必要事項を入力したら「Save」ボタンでサイト情報を保存しておきましょう。次回以降は保存済みのサイトをクリックするだけで接続できるようになります。

パスワード認証よりも安全な「公開鍵認証」を使おう

WinSCPはパスワード認証だけでなく、SSH公開鍵認証もサポートしています。公開鍵認証はパスワード認証に比べて圧倒的に安全です。その理由は以下の通りです。

  • パスワードのような「知識情報」だけでなく、秘密鍵ファイルという「所持情報」が必要になる(2要素的な強度)
  • ブルートフォース攻撃(総当たり攻撃)が事実上不可能
  • パスワードをネットワーク上に一切送信しない

公開鍵認証を使う場合の手順は以下のとおりです。

  1. WinSCPに付属する「PuTTYgen」を使って鍵ペア(秘密鍵 + 公開鍵)を生成します。スタートメニューまたはWinSCPのTools > PuTTYgen から起動できます。
  2. PuTTYgenで「Generate」をクリックし、マウスをランダムに動かしてエントロピーを生成します。
  3. 生成された公開鍵のテキストをサーバーの ~/.ssh/authorized_keys ファイルに追記します。
  4. 秘密鍵は「Save private key」で.ppk形式(PuTTY形式)で保存します。このファイルは厳重に管理し、絶対に他人に渡さないでください。
  5. WinSCPのサイトマネージャーで、対象のサイトを選び「Advanced > SSH > Authentication」から秘密鍵ファイル(.ppk)を指定します。

⚠️ 秘密鍵ファイルの管理に注意
秘密鍵(.ppkファイル)は「サーバーへの鍵」そのものです。このファイルが漏洩すると、パスフレーズを設定していない場合は即座に不正アクセスが可能になります。必ずパスフレーズを設定し、クラウドストレージへの保存やメールへの添付は絶対に避けてください。

初回接続時のホスト鍵確認

初めてサーバーに接続する際、WinSCPは「Unknown host key(ホスト鍵が未知です)」というダイアログを表示します。これはサーバーの本人確認をしているプロセスであり、セキュリティ上非常に重要な仕組みです。

表示される「フィンガープリント(Fingerprint)」の値を、サーバー管理者から事前に受け取った値、またはサーバー上で直接確認した値(ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub などで確認できます)と必ず照合してください。

値が一致していれば「Accept(接続して保存)」をクリックします。次回以降は保存されたホスト鍵と照合され、中間者攻撃(Man-in-the-Middle Attack)の検知が可能になります。フィンガープリントを確認せずに「Yes」を押し続けることは、セキュリティ上の大きなリスクになります。


基本的な使い方──ファイル転送の操作をマスターする

接続に成功すると、コマンダー形式の場合は画面が左右に分かれ、左にローカルPC、右にリモートサーバーのファイル一覧が表示されます。

ファイルのアップロード(ローカル → サーバー)

ローカルのファイルやフォルダをサーバーに送る方法はいくつかあります。

  • ドラッグ&ドロップ:左パネルのファイルを右パネルにドラッグするだけ。最もシンプルな方法です。
  • F5キー:左パネルでファイルを選択してF5を押すと「Copy(コピー)」ダイアログが開きます。転送先パスを確認または変更してOKをクリックします。
  • 右クリックメニュー:ファイルを右クリック >「Upload」でアップロードできます。

ファイルのダウンロード(サーバー → ローカル)

右パネル(サーバー側)のファイルを左パネル(ローカル)にドラッグするか、右パネルでファイルを選択してF5キーを押します。アップロードと同様にコピーダイアログが表示されます。

ファイルの削除・リネーム・パーミッション変更

  • 削除(Delete):ファイルを選択してDeleteキー、または右クリック >「Delete」
  • リネーム(F2):ファイルを選択してF2キー、または右クリック >「Rename」
  • パーミッション変更:右クリック >「Properties(プロパティ)」で「Permissions(パーミッション)」タブを開くと、Linuxのファイルパーミッション(例:755, 644)をGUIで変更できます。

ディレクトリの同期(Synchronize)

WinSCPにはディレクトリ同期機能があります。ローカルとサーバーのフォルダを比較して、差分だけを転送することができます。Webサイトの更新作業などで非常に役立ちます。

操作方法:上部メニューの「Commands > Synchronize(Ctrl+S)」を選択します。

  • Local → Remote:ローカルの更新をサーバーに反映(デプロイ)
  • Remote → Local:サーバーの更新をローカルに反映(バックアップ取得など)
  • Both directions:双方向の差分を同期

「Preview changes」にチェックを入れると、実際に転送が始まる前に変更内容の一覧が確認できるため、誤って重要なファイルを上書きするリスクを減らせます。

テキストエディターで直接編集

サーバー上のテキストファイル(設定ファイルやシェルスクリプトなど)を直接編集したい場合、ファイルをダブルクリックするかF4キーを押すと、内蔵エディターまたは外部エディターでファイルが開きます。編集して保存すると、自動的にサーバーに転送(アップロード)されます。

使用するエディターはメニューの「Options > Preferences > Editors」で設定できます。VSCodeやNotepad++など、使い慣れたエディターを指定しておくと便利です。


便利な機能をさらに活用する

端末エミュレーター(SSHターミナル)との統合

WinSCPはPuTTYと連携して、ファイル転送ツールとターミナルを同時に使えます。ツールバーの「Open in PuTTY」ボタン(または右クリックメニューの「Open in PuTTY」)をクリックすると、現在接続中のサーバーにPuTTYでSSH接続したターミナルウィンドウが開きます。設定ファイルの編集をWinSCPのエディターで行いながら、ターミナルでコマンドを実行してサービスを再起動する、といった使い方が非常にスムーズにできます。

タスクの自動化(コマンドラインスクリプト)

WinSCPはGUI操作だけでなく、コマンドライン(CLI)モードも提供しています。バッチファイルやタスクスケジューラーと組み合わせることで、ファイル転送の自動化が可能です。

たとえば毎日深夜にサーバーのログをローカルにバックアップするスクリプトは以下のように書けます(PowerShell形式の例):

# WinSCP .NETアセンブリを使う方法(より高機能)
# または標準のWinSCP.comコマンドラインを使う方法

WinSCP.com /command `
  "open sftp://username:password@hostname/" `
  "get /var/log/*.log C:\Backup\Logs\" `
  "exit"

本番環境でスクリプトを使う際は、パスワードをコマンドラインに直接書かず、秘密鍵認証マスターパスワードで保護した設定ファイルを使うことをお勧めします。

保存済みセッションへのショートカット

よく使うサーバーをデスクトップにショートカットとして作成できます。サイトマネージャーで接続先を選択し、右クリック >「Create Desktop Shortcut」を選ぶと、ショートカットをダブルクリックするだけで直接接続できるようになります。

バックグラウンド転送キュー

大きなファイルを転送しながら別の操作を続けたい場合、WinSCPは転送をバックグラウンドキューに入れることができます。複数のファイルをキューに追加して順番に転送させることも可能です。転送状況はウィンドウ下部の転送キューパネルで確認できます。


セキュリティをさらに高める実践的な設定Tips

WinSCPを安全に使うために、以下の設定や習慣を取り入れることをおすすめします。

Tips 1:マスターパスワードを設定する

WinSCPはサイトマネージャーに保存したパスワードを、デフォルトでは比較的容易に復号できる形式でローカルに保存します。PCへの不正アクセスやマルウェアによって保存パスワードが窃取されるリスクを減らすために、マスターパスワードを設定することを強くおすすめします。

設定方法:「Options > Preferences > Security」タブで「Use master password to protect stored passwords」にチェックを入れ、マスターパスワードを設定します。以降、WinSCPの起動時にマスターパスワードの入力が要求されます。

Tips 2:ホスト鍵を定期的に確認・管理する

先ほど述べたホスト鍵は、「Options > Preferences > Security > Host keys」で管理できます。不審な変更(ホスト鍵の突然の変化)が発生した際は接続を中断し、サーバー管理者に確認しましょう。ホスト鍵の変化は中間者攻撃や、サーバーの再インストールを示している可能性があります。

Tips 3:秘密鍵にはパスフレーズを必ず設定する

公開鍵認証に使う秘密鍵ファイルには、必ずパスフレーズを設定してください。パスフレーズを設定しておくと、仮に秘密鍵ファイルが盗まれても、パスフレーズを知らない攻撃者はそのファイルを使えません。パスフレーズはできるだけ長く、英数字・記号を組み合わせたものを推奨します。

Tips 4:不要な機能を無効化する

使わないプロトコル(FTPなど)はサイトマネージャーに登録しないようにし、接続設定はSFTP/SCPに限定しましょう。サーバー側でもFTPデーモン(vsftpdやproftpdなど)が不要な場合は無効化しておくことが望ましいです。

Tips 5:接続ログを有効にして記録を残す

Options > Preferences > Logging」でセッションログを有効にしておくと、いつ、どのファイルを、どのサーバーに転送したかの記録が残ります。セキュリティインシデントが発生した際の調査に役立ちます。ただしログファイルの保存先は適切なアクセス制限をかけてください。

Tips 6:Windowsファイアウォールと連携する

サーバーへのSSH接続(ポート22)は特定のIPアドレスからのみ許可するようにサーバー側のファイアウォール(iptables、UFW、AWSのセキュリティグループなど)を設定しておくと、不審な接続試行を大幅に減らせます。WinSCPは接続元クライアントのツールですが、「接続する先のサーバーを堅牢にする」というサーバーサイドの設定も並行して行うことが重要です。


よくあるトラブルと解決方法

「Connection refused」が表示される

接続を拒否されるエラーです。主な原因は以下のとおりです。

  • ホスト名またはIPアドレスが間違っている
  • サーバーのSSHデーモン(sshd)が起動していない(systemctl status sshd で確認)
  • サーバーのファイアウォールがポート22をブロックしている
  • SSHのポート番号を22以外に変更している(サーバー側の /etc/ssh/sshd_config の Port 設定を確認)

「Network error: Connection timed out」が表示される

接続がタイムアウトするエラーです。ネットワーク経路上の問題である場合が多いです。

  • サーバーの電源が切れているか、ネットワークから切断されている
  • 途中のルーターやファイアウォールがパケットを破棄している
  • VPN接続が必要な環境でVPNに接続していない

「Authentication failed」が表示される

認証に失敗するエラーです。

  • ユーザー名またはパスワードが間違っている
  • 公開鍵認証の場合:秘密鍵ファイルのパスが間違っているか、サーバーの ~/.ssh/authorized_keys に対応する公開鍵が登録されていない
  • サーバーがパスワード認証を無効にしている(/etc/ssh/sshd_config の PasswordAuthentication no)のに、パスワードで接続しようとしている

「Host key has changed」警告が表示される

保存済みのホスト鍵と実際のサーバーのホスト鍵が一致しないエラーです。このエラーは軽視してはいけません。

正当な原因としては、サーバーの再インストール、OSのアップグレード、SSHサーバーの再設定などがあります。しかし中間者攻撃の可能性もゼロではないため、必ずサーバー管理者に確認を取り、正当な原因があることを確認してから「Update」して新しい鍵を保存してください。

日本語ファイル名が文字化けする

日本語ファイル名を扱う場合、文字コードの設定が重要です。「Advanced Site Settings > Environment」タブで「UTF-8 encoding」を「On」に設定してください。現代のLinuxサーバーはほぼすべてUTF-8を使用しています。


まとめ──WinSCPはセキュアなサーバー管理の入口

WinSCPはシンプルなUIで使いやすく、かつSSH/SFTPによる暗号化通信・公開鍵認証・ホスト鍵管理など、現代のセキュリティ要件を十分に満たした機能を備えています。「サーバーにファイルを安全に送る」という基本的なニーズを満たすだけでなく、上手に活用することで日常のサーバー管理作業を大幅に効率化できるツールです。

今回の記事では触れられませんでしたが、WinSCPは.NET アセンブリ(ライブラリ)としても利用でき、C#やPowerShellからプログラム的に操作することも可能です。自動化や運用スクリプトの幅を大きく広げてくれる点でも、覚えておいて損はないツールといえるでしょう。

まずは公式サイトから安全にダウンロードして、自分の環境で試してみることをおすすめします。百聞は一見にしかず、画面を触ることで理解が格段に深まります。

📚 参考リンク
・WinSCP公式サイト:https://winscp.net/
・WinSCP公式ドキュメント:https://winscp.net/eng/docs/start
・WinSCP コマンドラインリファレンス:https://winscp.net/eng/docs/commandline

コメント