WinSCPコマンドラインの簡略化:完全な参照

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コマンドラインでは異なるアプローチが必要です。対話型のウィンドウの代わりに、接続属性をより直接的な方法で指定する必要があります。

Connection attributes

WinSCPコマンドラインに接続先を指示するためには、セッションURLが使用されます。このURLにはGUIで定義された接続属性がカプセル化されています。

A basic session URL follows this structure:

<protocol>://<username>:<password>@<host name>/<folder path>

たとえば、WinSCPでSFTPを使用してホスト1.1.1.1にユーザー名adamおよびパスワードpwで接続するには、セッションURLは以下の通りです:

sftp://adam:pw@1.1.1.1

WinSCPサイトを設定した場合、セッションURLを簡単に見つけることができます。WinSCP GUIを開き、Sessionをクリックし、サイトを右クリックしてGenerate Session URL/Codeを選択します。

WinSCP site

セッションURLダイアログボックスでは、WinSCPがリモートホストとのやり取りをどのように行うかに影響を与えるさまざまなカスタマイズオプションが提供されます。

  • Initial directory – 接続時にWinSCPが開くリモートディレクトリを指定します。
  • SSH host key – リモートホスト認証に既存のSSHキーを使用します。
  • WinSCP-specific URLWinSCP-sftp://のようなWinSCP独自のセッションURLを生成し、デフォルトのWebブラウザとの競合を避けます。
  • Save extension – WinSCP独自のURLとよく組み合わせてアプリケーションの競合をさらに減少させます。

すべてのオプションが有効になっている場合、セッションURLの形式は次のようになります。

<protocol>://<username>:<password>@<host name>/<folder path><save extension>
Generate Session URL/Code

WinSCPコマンドラインのマスタリング:セッション接続コードの生成

セッションURLが準備できたら、WinSCPはGenerate session URL/codeウィンドウのScriptタブでコード例を提供します。ここでは、異なるスクリプトタイプから選択できます。

  • スクリプトファイル
  • バッチファイル
  • コマンドライン
  • PowerShellスクリプト

お好みのスクリプトタイプを選択し、WinSCPはWinSCPコマンドラインを使用してリモートホストに接続するための構文を生成します。

Generating Session Connection Code

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

.NET assembly code tab

WinSCP.exe対WinSCP.com:WinSCPコマンドラインのコンテキストでの違いを理解する

WinSCPコマンドラインツールの使用にはセッションURLを生成する方法を知ることが重要です。 winscp.exewinscp.comの違いを理解しながら、これらのツールを使用してホストに接続する方法を探ってみましょう。

Winscp.exeはGUIランチャーとしても機能し、シンプルなタスクのためのコマンドラインユーティリティとしても機能します。正しいパラメータを指定すれば、基本的なコマンドに使用できます。

winscp.exeをWinSCPのGUI機能とコマンドラインインターフェースの橋渡しと考えてください。

特にスクリプトでの複雑なタスクには、winscp.comが適しています。このコンソールベースのツールは自動化スクリプトに最適で、さまざまなSSH機能をサポートしています。これは本当の非対話型WinSCPコマンドライン体験を提供します。

選択に関係なく、コマンドプロンプト(cmd.exeまたはPowerShell)を開き、WinSCPのインストールディレクトリに移動してください。

cd 'C:\Program Files (x86)\WinSCP'

コマンドプロンプトが準備できている場合は、WinSCPをリモート接続に使用する手順に進みましょう。

WinSCP.exeを利用する:セッションURLでリモートホストに接続する

リモートホストに接続する最も簡単な方法の1つは、WinSCPコマンドラインを実行して、セッションURLをパラメータとして渡すことです。たとえば、54.179.19.216ホストにautomateというユーザー名とsftpを使用してパスワードautomateで接続し、/tmpディレクトリに移動するには、次のコマンドを使用します:

WinSCP.exe sftp://automate:automate@54.179.19.216/tmp/

セキュリティを向上させるために、パスワードの代わりに/privatekeyパラメータを使用してリモートホストに接続することができます。この方法はより安全ですが、プライベートキーの設定の詳細は、このWinSCPコマンドラインのチュートリアルの範囲外です。

ここでは、54.179.19.216ホストにautomateというユーザー名とプライベートキーmykey.ppkを使用してscpを介して接続する例を示します。

winscp.exe scp://[email protected]/tmp/ /privatekey=mykey.ppk

WinSCP.exeを使用してサイトなしで効率的にファイルをダウンロードする

WinSCPコマンドラインを介したwinscp.exeにより、事前定義されたWinSCPサイトなしでも、即座にファイルを転送できます。サイトの構成なしでリモートホストからファイルをダウンロードする方法を見てみましょう。たとえば、SFTPを使用してリモートホスト54.179.19.216の/tmpディレクトリのすべてのファイルをダウンロードします。

1. セッションURLを生成してください。以下は、automateの資格情報を使用してリモートホストに接続し、/tmpディレクトリに移動する例です。

# 生成されたセッションURL
sftp://automate:automate@54.179.19.216/tmp

2. セッションURLを使用してwinscp.exeを実行し、WinSCP転送設定ダイアログボックスにアクセスします。ローカルディレクトリは~\Documentsにデフォルトで設定されており、WinSCPはリモートディレクトリ内のすべてのファイル(\\*.*)を対象とします。

# コマンド構文: winscp.exe [/path/[file]]
winscp.exe sftp://automate:automate@54.179.19.216/tmp

3. 転送を開始するにはOKをクリックしてください。WinSCPは、リモート/tmpディレクトリからすべてのファイルを選択したローカルディレクトリにSFTP経由でダウンロードします。

Downloading the Files without a Site

WinSCP.exeを使用してサイトなしでファイルをアップロードする

ファイルのダウンロードをマスターした後、WinSCPコマンドラインwinscp.exeを使用してリモートホストにファイルをアップロードする方法に切り替えましょう。このプロセスはダウンロードと同様ですが、今回は/uploadスイッチを使用してアップロードするファイルまたはフォルダーを指定する必要があります。

# サイトなしでwinscp.exeを使用してファイルa.txtをリモートサーバーにアップロードする
.\WinSCP.exe sftp://automate:automate@54.179.19.216/tmp/ /upload C:\Users\shanky\Desktop\a.txt

上記のコマンドを実行すると、WinSCPのアップロードダイアログが表示され、リモートホストの/tmpディレクトリにアップロードされるファイル(*.*)が表示されます。

Uploading the Files without a Site

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

File Uploaded Successfully on Remote Machine

WinSCP.exeを使用したサイトからのファイルのダウンロード

セッションURLはアドホックな接続に便利ですが、事前に構成されたWinSCPサイトを持っていると、プロセスが簡略化されます。WinSCPをしばらく使用している場合、既にいくつかのサイトが設定されている可能性があります。

WinSCP.exeを使用すると、GUIで作成されたこれらのサイトを簡単に使用して、セッションURLの詳細を覚えておく必要なしにリモートホストに接続できます。

WinSCPで保存されたサイトを見つけるには、セッション -> サイト -> サイトマネージャに移動します。

たとえば、WinSCPコマンドラインを使用してファイルをダウンロードする方法を調べてみましょう。

1. 構成済みのWinSCPサイトを使用してリモートホストに接続します。以下の例では、Adamsiteという名前のサイトを使用した接続を示しています。

# WinSCPサイトを使用して接続
winscp.exe Adamsite

接続すると、WinSCPがステータス通知を表示します。

Connecting to Remote Machine Using a Site

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

# サイトを使用してリモート接続を初期化
winscp.exe sftp://Adamsite/tmp

OKをクリックして、リモートホストの/tmpディレクトリからすべてのファイルをSFTPを介してローカルディレクトリにダウンロードを開始してください。

Downloading Files Using a Site

ローカルマシンからリモートホストにファイルをアップロードする場合、プロセスは同様です。ファイルまたはディレクトリパスと一緒に/uploadスイッチを使用し、winscp.exe Site3 /upload .\license.txtのようにします。完全なURLの指定(sftp://Adamsite/tmp)は必要ありません。

WinSCP.exeを使用したリモートファイルの編集を効率化する

リモートホスト上のテキストファイルを編集する必要がありますか?手動のダウンロード-編集-アップロードサイクルをスキップしてください。WinSCPコマンドラインは、/editパラメータを使用したより効率的な方法を提供します。単にサイト名、/edit、およびリモートファイルパスを指定します。

例:

# リモートホスト上のファイルの編集
winscp.exe /edit /Adamsite/path/to/file.txt
# WinSCPコマンドラインを使用してリモートファイルを編集
.\WinSCP.exe Adamsite /edit /tmp/a.txt

上記のコマンドを実行すると、デフォルトのテキストエディタが起動し、必要に応じてリモートファイルを修正できます。このシームレスな統合は、WinSCPコマンドラインの重要な機能です。

Editing Remote Files Using a Site

編集後、ファイルを保存するだけです。WinSCPがリモートホスト上のファイルを更新するため、編集-アップロードプロセスが合理化されます。

WinSCP.exeセッションログの使用を最適化

WinSCPコマンドラインは、セッションログの提供を通じて、行動の包括的な記録を可能にします。この機能は、セッション中に実行されたコマンドの追跡、トラブルシューティング、記録保持に非常に役立ちます。

セッションログを有効にするには、セッションに接続する際に最大3つのパラメータを含めます:

# セッションログのためのパラメータ
/log="<log file path>" /loglevel=<level> /logsize=<size>
  • /log – ログファイルのパスを指定します。
  • /loglevel – ログの冗長性を設定します。冗長性のレベルは、Reduced1)からDebug2)までの範囲です。
  • /logsize – ログファイルのサイズとローテーションを、<全アーカイブログ数>*<最大ログファイルサイズ>の形式で定義します。

以下は、winscp.exeがホストに接続し、C:\winscp.logDebugレベルのアクティビティを記録する例です。このコマンドは、最大5つの10MBのログファイル(5*10MB)を維持します。

# WinSCPセッションログの例
winscp.exe sftp://[email protected]/tmp/ /log="C:\\winscp.log" /loglevel=2 /logsize=5*10M

WinSCP.comインタラクティブコマンドを使用した高度な機能の探索

winscp.exeはリモート接続の素晴らしい導入を提供しますが、winscp.comはコマンドラインの体験をさらに深化させ、より高度なインタラクションと制御を提供します。

コマンドライン環境でwinscp.comを開始します。SSHを彷彿とさせる対話型セッションに入り、winscp>プロンプトが表示されます。

.\WinSCP.com

openコマンドと希望のサイト名を続けて使用し、リモートコンピュータに接続します。

open Adamsite

WinSCPコマンドラインを介してリモートホストに接続した後、Adamsiteで示されるように、SSHセッションに似た環境になります。ここで、リモートホストと効率的にコマンドを実行し、対話することができます。

Interactively Running Commands using winscp.com

セキュリティ強化:WinSCPで新しいキーペア(ホストキー)を使って接続

公開キー認証は、セッションに接続する際のセキュリティを強化します。これを使用するには、まずセッションのホストキーのフィンガープリントを取得します。以下の構文に従ってWinSCPフォルダ内でssh-keygenコマンドを使用します。

このコマンドは、安全な認証に不可欠なSSHキーペアを生成します。実行すると、winscp.comセッション接続に必要なフィンガープリントを受け取ります。

ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key
Verifying SSH Key Fingerprint

hostkeyパラメータで接続するには、以下の例に示すように生成されたフィンガープリントを提供します。

ssh-keygenからのフィンガープリントを使用する際には、プレフィックスssh-rsa 2048を含めます。

winscp.com open sftp://automate:[email protected]/  -hostkey="ssh-rsa 2048 x4DeZzv4jcWEk2zeeJgr5JeJ+z0xA+lGa3LC0q/B+88="

WinSCP.comで効率を最大化する:/commandパラメータの使用

インタラクティブセッションは特定のタスクには素晴らしいですが、非インタラクティブなコマンド実行はスクリプトと自動化には不可欠です。 winscp.com は、/command パラメーターを介してこれをサポートし、セッションを確立し、コマンドを実行し、1つのステップで切断できます。

たとえば、/command パラメーターを使用して、ローカルファイルをリモートホストに転送します。以下の例では、C:\abc\abc.txt からファイルをリモートホスト 13.213.61.127/tmp ディレクトリにコピーする方法を示しています。

/command パラメーターは、セッションを確立するための文字列と、実際のコマンド実行のためのもう一つの文字列を取ります。

# WinSCP を使用した非インタラクティブなファイル転送
WinSCP.com /command "open sftp://adam:[email protected]/tmp" "put C:\\abc\\abc.txt"
Session log for adam@13.213.61.127
C:\abc\abc.txt            |            0 B |    0.0 KB/s | binary |   0%

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スクリプト
 open sftp://automate:automate@54.179.19.216/  -hostkey="ssh-rsa 2048 x4DeZzv4jcWEk2zeeJgr5JeJ+z0xA+lGa3LC0q/B+88="
 cd /tmp
 get a.txt C:\abc\
 close
 open sftp://automate:automate@54.179.19.216/ -hostkey="ssh-rsa 2048 x4DeZzv4jcWEk2zeeJgr5JeJ+z0xA+lGa3LC0q/B+88="
 cd /tmp
 put C:\abc\new_file.txt 
 close
 exit

このスクリプトは、WinSCPで/scriptパラメータを使用して実行します。次のコマンドを使用します:

/ini=nulスイッチを使用して、WinSCPが終了時にセッション設定を保存しないようにします。

winscp.com /ini=nul /script=upload_file_script.txt
   # 出力
   Authenticating...
   Session started.
   /tmp
   a.txt                     |           10 B |    0.0 KB/s | binary | 100%
   Session closed.
   # アップロード用の新しいセッション
   Session started.
   /tmp
   C:\abc\new_file.txt       |            0 B |    0.0 KB/s | binary |   0%
   Session closed.

WinSCP.comを使用したキーコンバージョン

WinSCPは、パスワードと証明書ベースまたは公開鍵認証をサポートしています。公開鍵認証を使用するには、互換性のあるプライベートキーフォーマットが必要です。WinSCPは、互換性のためのキーフォーマットの変換をサポートしています。

たとえば、winscp.com内の/keygenパラメータを使用して、PEM形式のプライベートキー(AWS EC2など)をPuttyに適した形式に変換します。

  • /keygenパラメータを適用し、キーの現在のパスを続けます。
  • 変換されたキーの出力ファイルパスを指定するには、-oパラメータを含めます。
  • 任意で、変換されたキーにコメントを追加するには、-cパラメータを使用します。
.\WinSCP.com /keygen C:\Users\shanky\Desktop\testing.pem -o C:\Users\shanky\Desktop\testing.ppk -c "Converted from OpenSSH format"

結論

この包括的な WinSCPコマンドラインガイドとWinSCP GUIガイドとともに、WinSCPの機能を十分に活用できるようになりました。ファイル転送、コマンド実行、スクリプト実行、またはキー変換など、WinSCPはどんなITプロフェッショナルにも適した多目的ツールです。

WinSCPをワークフローにどのように統合する予定ですか?お考えや経験を共有してください!

Source:
https://adamtheautomator.com/winscp-command-line/