WinSCPは、セキュアなファイル転送のための主力ツールであり、単なるグラフィカルユーザーインターフェースを提供するだけでなく、WinSCPコマンドラインの機能により、ITプロフェッショナルやシステム管理者はコンソールから直接ファイル転送を管理し、ワークフローの効率と柔軟性を向上させることができます。
WinSCP GUIの詳細については、この記事と対応する記事、「WinSCP GUI: The Ultimate Guide」を参照してください。
WinSCPが提供するすべてのコマンドライン機能をこの究極のガイドで発見してください。WinSCPコマンドラインを活用して生産性を最大化し、ファイル転送プロセスを効率化する方法をステップバイステップで学びます。
さあ、WinSCPとコマンドラインファイル管理の世界にダイブしましょう!
WinSCPコマンドラインを使用するための前提条件
- A Windows XP+ PC – This tutorial will use Windows 10 Enterprise.
- A remote Linux host – This tutorial will use an Ubuntu 18.04.5 LTS machine.
- A user account on the remote SSH host with sudo permissions.
WinSCPコマンドラインでセッションURLを生成する
WinSCP GUIは接続の設定に便利なログインウィンドウを提供していますが、WinSCPコマンドラインでは異なるアプローチが必要です。対話型のウィンドウの代わりに、接続属性をより直接的な方法で指定する必要があります。

WinSCPコマンドラインに接続先を指示するためには、セッションURLが使用されます。このURLにはGUIで定義された接続属性がカプセル化されています。
A basic session URL follows this structure:
たとえば、WinSCPでSFTPを使用してホスト1.1.1.1
にユーザー名adam
およびパスワードpw
で接続するには、セッションURLは以下の通りです:
WinSCPサイトを設定した場合、セッションURLを簡単に見つけることができます。WinSCP GUIを開き、Sessionをクリックし、サイトを右クリックしてGenerate Session URL/Codeを選択します。

セッションURLダイアログボックスでは、WinSCPがリモートホストとのやり取りをどのように行うかに影響を与えるさまざまなカスタマイズオプションが提供されます。
- Initial directory – 接続時にWinSCPが開くリモートディレクトリを指定します。
- SSH host key – リモートホスト認証に既存のSSHキーを使用します。
- WinSCP-specific URL –
WinSCP-sftp://
のようなWinSCP独自のセッションURLを生成し、デフォルトのWebブラウザとの競合を避けます。 - Save extension – WinSCP独自のURLとよく組み合わせてアプリケーションの競合をさらに減少させます。
すべてのオプションが有効になっている場合、セッションURLの形式は次のようになります。

WinSCPコマンドラインのマスタリング:セッション接続コードの生成
セッションURLが準備できたら、WinSCPはGenerate session URL/codeウィンドウのScriptタブでコード例を提供します。ここでは、異なるスクリプトタイプから選択できます。
- スクリプトファイル
- バッチファイル
- コマンドライン
- PowerShellスクリプト
お好みのスクリプトタイプを選択し、WinSCPはWinSCPコマンドラインを使用してリモートホストに接続するための構文を生成します。

.NET、C#、またはPowerShellでコーディングする場合は、.NETアセンブリコードタブに切り替えます(以下に示すように)。

WinSCP.exe対WinSCP.com:WinSCPコマンドラインのコンテキストでの違いを理解する
WinSCPコマンドラインツールの使用にはセッションURLを生成する方法を知ることが重要です。 winscp.exeとwinscp.comの違いを理解しながら、これらのツールを使用してホストに接続する方法を探ってみましょう。
Winscp.exeはGUIランチャーとしても機能し、シンプルなタスクのためのコマンドラインユーティリティとしても機能します。正しいパラメータを指定すれば、基本的なコマンドに使用できます。
winscp.exeをWinSCPのGUI機能とコマンドラインインターフェースの橋渡しと考えてください。
特にスクリプトでの複雑なタスクには、winscp.comが適しています。このコンソールベースのツールは自動化スクリプトに最適で、さまざまなSSH機能をサポートしています。これは本当の非対話型WinSCPコマンドライン体験を提供します。
選択に関係なく、コマンドプロンプト(cmd.exeまたはPowerShell)を開き、WinSCPのインストールディレクトリに移動してください。
コマンドプロンプトが準備できている場合は、WinSCPをリモート接続に使用する手順に進みましょう。
WinSCP.exeを利用する:セッションURLでリモートホストに接続する
リモートホストに接続する最も簡単な方法の1つは、WinSCPコマンドラインを実行して、セッションURLをパラメータとして渡すことです。たとえば、54.179.19.216
ホストにautomate
というユーザー名とsftp
を使用してパスワードautomate
で接続し、/tmpディレクトリに移動するには、次のコマンドを使用します:
セキュリティを向上させるために、パスワードの代わりに/privatekey
パラメータを使用してリモートホストに接続することができます。この方法はより安全ですが、プライベートキーの設定の詳細は、このWinSCPコマンドラインのチュートリアルの範囲外です。
ここでは、54.179.19.216
ホストにautomate
というユーザー名とプライベートキーmykey.ppk
を使用してscp
を介して接続する例を示します。
WinSCP.exeを使用してサイトなしで効率的にファイルをダウンロードする
WinSCPコマンドラインを介したwinscp.exeにより、事前定義されたWinSCPサイトなしでも、即座にファイルを転送できます。サイトの構成なしでリモートホストからファイルをダウンロードする方法を見てみましょう。たとえば、SFTPを使用してリモートホスト54.179.19.216の/tmpディレクトリのすべてのファイルをダウンロードします。
1. セッションURLを生成してください。以下は、automate
の資格情報を使用してリモートホストに接続し、/tmpディレクトリに移動する例です。
2. セッションURLを使用してwinscp.exeを実行し、WinSCP転送設定ダイアログボックスにアクセスします。ローカルディレクトリは~\Documentsにデフォルトで設定されており、WinSCPはリモートディレクトリ内のすべてのファイル(\\*.*
)を対象とします。
3. 転送を開始するにはOKをクリックしてください。WinSCPは、リモート/tmpディレクトリからすべてのファイルを選択したローカルディレクトリにSFTP経由でダウンロードします。

WinSCP.exeを使用してサイトなしでファイルをアップロードする
ファイルのダウンロードをマスターした後、WinSCPコマンドラインとwinscp.exeを使用してリモートホストにファイルをアップロードする方法に切り替えましょう。このプロセスはダウンロードと同様ですが、今回は/upload
スイッチを使用してアップロードするファイルまたはフォルダーを指定する必要があります。
上記のコマンドを実行すると、WinSCPのアップロードダイアログが表示され、リモートホストの/tmpディレクトリにアップロードされるファイル(*.*
)が表示されます。

アップロード後、SSHクライアントでリモートホストにログインし、pwd
やls -lh
などのコマンドでアップロードの成功を確認してください。これにより、ディレクトリの内容が表示され、転送が成功したことが確認されます。

WinSCP.exeを使用したサイトからのファイルのダウンロード
セッションURLはアドホックな接続に便利ですが、事前に構成されたWinSCPサイトを持っていると、プロセスが簡略化されます。WinSCPをしばらく使用している場合、既にいくつかのサイトが設定されている可能性があります。
WinSCP.exeを使用すると、GUIで作成されたこれらのサイトを簡単に使用して、セッションURLの詳細を覚えておく必要なしにリモートホストに接続できます。
WinSCPで保存されたサイトを見つけるには、セッション -> サイト -> サイトマネージャに移動します。
たとえば、WinSCPコマンドラインを使用してファイルをダウンロードする方法を調べてみましょう。
1. 構成済みのWinSCPサイトを使用してリモートホストに接続します。以下の例では、Adamsite
という名前のサイトを使用した接続を示しています。
接続すると、WinSCPがステータス通知を表示します。

2. 次に、プロトコル(sftp
)、サイト名(Adamsite
)、およびターゲットディレクトリ(/tmp
)を指定してwinscp.exeを実行します。この方法では、WinSCP転送設定ダイアログボックスが表示され、ファイルのダウンロード操作が準備されます。
OKをクリックして、リモートホストの/tmpディレクトリからすべてのファイルをSFTPを介してローカルディレクトリにダウンロードを開始してください。

ローカルマシンからリモートホストにファイルをアップロードする場合、プロセスは同様です。ファイルまたはディレクトリパスと一緒に
/upload
スイッチを使用し、winscp.exe Site3 /upload .\license.txt
のようにします。完全なURLの指定(sftp://Adamsite/tmp
)は必要ありません。
WinSCP.exeを使用したリモートファイルの編集を効率化する
リモートホスト上のテキストファイルを編集する必要がありますか?手動のダウンロード-編集-アップロードサイクルをスキップしてください。WinSCPコマンドラインは、/edit
パラメータを使用したより効率的な方法を提供します。単にサイト名、/edit
、およびリモートファイルパスを指定します。
例:
上記のコマンドを実行すると、デフォルトのテキストエディタが起動し、必要に応じてリモートファイルを修正できます。このシームレスな統合は、WinSCPコマンドラインの重要な機能です。

編集後、ファイルを保存するだけです。WinSCPがリモートホスト上のファイルを更新するため、編集-アップロードプロセスが合理化されます。
WinSCP.exeセッションログの使用を最適化
WinSCPコマンドラインは、セッションログの提供を通じて、行動の包括的な記録を可能にします。この機能は、セッション中に実行されたコマンドの追跡、トラブルシューティング、記録保持に非常に役立ちます。
セッションログを有効にするには、セッションに接続する際に最大3つのパラメータを含めます:
/log
– ログファイルのパスを指定します。/loglevel
– ログの冗長性を設定します。冗長性のレベルは、Reduced(1
)からDebug(2
)までの範囲です。/logsize
– ログファイルのサイズとローテーションを、<全アーカイブログ数>*<最大ログファイルサイズ>
の形式で定義します。
以下は、winscp.exeがホストに接続し、C:\winscp.log
にDebugレベルのアクティビティを記録する例です。このコマンドは、最大5つの10MBのログファイル(5*10MB
)を維持します。
WinSCP.comインタラクティブコマンドを使用した高度な機能の探索
winscp.exeはリモート接続の素晴らしい導入を提供しますが、winscp.comはコマンドラインの体験をさらに深化させ、より高度なインタラクションと制御を提供します。
コマンドライン環境でwinscp.comを開始します。SSHを彷彿とさせる対話型セッションに入り、winscp>
プロンプトが表示されます。
open
コマンドと希望のサイト名を続けて使用し、リモートコンピュータに接続します。
WinSCPコマンドラインを介してリモートホストに接続した後、Adamsite
で示されるように、SSHセッションに似た環境になります。ここで、リモートホストと効率的にコマンドを実行し、対話することができます。

セキュリティ強化:WinSCPで新しいキーペア(ホストキー)を使って接続
公開キー認証は、セッションに接続する際のセキュリティを強化します。これを使用するには、まずセッションのホストキーのフィンガープリントを取得します。以下の構文に従ってWinSCPフォルダ内でssh-keygen
コマンドを使用します。
このコマンドは、安全な認証に不可欠なSSHキーペアを生成します。実行すると、winscp.comセッション接続に必要なフィンガープリントを受け取ります。

hostkey
パラメータで接続するには、以下の例に示すように生成されたフィンガープリントを提供します。
ssh-keygen
からのフィンガープリントを使用する際には、プレフィックスssh-rsa 2048
を含めます。
WinSCP.comで効率を最大化する:/command
パラメータの使用
インタラクティブセッションは特定のタスクには素晴らしいですが、非インタラクティブなコマンド実行はスクリプトと自動化には不可欠です。 winscp.com は、/command
パラメーターを介してこれをサポートし、セッションを確立し、コマンドを実行し、1つのステップで切断できます。
たとえば、/command
パラメーターを使用して、ローカルファイルをリモートホストに転送します。以下の例では、C:\abc\abc.txt からファイルをリモートホスト 13.213.61.127
の /tmp ディレクトリにコピーする方法を示しています。
/command
パラメーターは、セッションを確立するための文字列と、実際のコマンド実行のためのもう一つの文字列を取ります。
WinSCP.com を使用したタスクの自動化: /script
パラメーター
より複雑な自動化ニーズには、winscp.com の /script
パラメーターを使用して、スクリプトから一連のコマンドを実行できます。この機能は、リモートホストでの繰り返しタスクや複雑な操作を管理する際に非常に便利です。
/script
パラメーターを WinSCP コマンドライン で利用するには、まず、お好みのテキストエディターを使用して、デスクトップに upload_file_script.txt という名前のスクリプトファイルを作成します。
リモートコンピューターの /tmp ディレクトリに、a.txt という名前の空のテキストファイルを準備します。
C:\abc にローカルディレクトリを作成します。
次に、以下の内容をupload_file_script.txtに入力して保存します。このスクリプトは、リモートの/tmpディレクトリからa.txtファイルをダウンロードし、new_file.txtとして再アップロードします。
このスクリプトは、WinSCPで/script
パラメータを使用して実行します。次のコマンドを使用します:
/ini=nul
スイッチを使用して、WinSCPが終了時にセッション設定を保存しないようにします。
WinSCP.comを使用したキーコンバージョン
WinSCPは、パスワードと証明書ベースまたは公開鍵認証をサポートしています。公開鍵認証を使用するには、互換性のあるプライベートキーフォーマットが必要です。WinSCPは、互換性のためのキーフォーマットの変換をサポートしています。
たとえば、winscp.com内の/keygen
パラメータを使用して、PEM形式のプライベートキー(AWS EC2など)をPuttyに適した形式に変換します。
/keygen
パラメータを適用し、キーの現在のパスを続けます。- 変換されたキーの出力ファイルパスを指定するには、
-o
パラメータを含めます。 - 任意で、変換されたキーにコメントを追加するには、
-c
パラメータを使用します。
結論
この包括的な WinSCPコマンドラインガイドとWinSCP GUIガイドとともに、WinSCPの機能を十分に活用できるようになりました。ファイル転送、コマンド実行、スクリプト実行、またはキー変換など、WinSCPはどんなITプロフェッショナルにも適した多目的ツールです。
WinSCPをワークフローにどのように統合する予定ですか?お考えや経験を共有してください!