WinSCPとは?
状態:-
閲覧数:6,068
投稿日:2017-02-22
更新日:2020-02-14
FTP/SFTP/FTPS/SCPに対応したファイル転送ソフト
・SFTP/FTPS/SCPといったファイル暗号化転送に対応している
※FTPはログイン情報やファイルなどを暗号化せずにやり取りするため、通信内容を盗聴してこれらの情報を盗み出すことが可能
特徴
・GUIを利用せずにコマンドラインで操作したり、テキスト形式で記述された処理を実行するスクリプト機能(バッチ処理機能)なども備えている
・海外で開発されているものの、メニューや各種メッセージなどは日本語化されている
・フリーで利用可能
WinSCP
・v5.9.4(17/02/15)
・SFTP/FTPS/SCPといったファイル暗号化転送に対応している
※FTPはログイン情報やファイルなどを暗号化せずにやり取りするため、通信内容を盗聴してこれらの情報を盗み出すことが可能
特徴
・GUIを利用せずにコマンドラインで操作したり、テキスト形式で記述された処理を実行するスクリプト機能(バッチ処理機能)なども備えている
・海外で開発されているものの、メニューや各種メッセージなどは日本語化されている
・フリーで利用可能
WinSCP
・v5.9.4(17/02/15)
インストール先:
C:\Program Files (x86)\WinSCP
セットアップの種類:
標準的なインストール(T)
選択コンポーネント:
WinSCP アプリケーション
ドラッグ&ドロップ シェル拡張(直接ダウンロードを許可します。再起動が必要です)
Pageant (SSH 認証エージェント)
PuTTYgen (鍵生成)
翻訳版
English
Japanese
追加タスク一覧:
WinSCP の更新を自動的に有効する(C) [推奨]
匿名化された利用統計の取得を許可する
デスクトップにアイコンを作成(D)
すべてのユーザ
エクスプローラーの「送る」メニューにアップロードのショートカットを作成
URL アドレスに関連づける(A)
ユーザの初期設定(後で変更できます)
コマンダー(C)
C:\Program Files (x86)\WinSCP
セットアップの種類:
標準的なインストール(T)
選択コンポーネント:
WinSCP アプリケーション
ドラッグ&ドロップ シェル拡張(直接ダウンロードを許可します。再起動が必要です)
Pageant (SSH 認証エージェント)
PuTTYgen (鍵生成)
翻訳版
English
Japanese
追加タスク一覧:
WinSCP の更新を自動的に有効する(C) [推奨]
匿名化された利用統計の取得を許可する
デスクトップにアイコンを作成(D)
すべてのユーザ
エクスプローラーの「送る」メニューにアップロードのショートカットを作成
URL アドレスに関連づける(A)
ユーザの初期設定(後で変更できます)
コマンダー(C)
After Installation
FileZilla で使用していた秘密鍵を、WinSCPで使用
WinSCPバッチ処理
コンソールモード
コマンドプロンプトで対話的に各種コマンドを実行する
・ワイルドカードで処理対象のファイルを指定できる
・WinSCP日本語Wiki
・コマンドリファレンス
ファイル名を指定する場合
・コマンドにスペースを含む引数を与える場合は引数を「”」(ダブルクォート)で囲む必要がある
ダブルクォートを含む引数を指定する場合
・その引数全体をダブルクォートで囲った上で、引数内のダブルクォートを「””」(ダブルクォート2つ)に置き換える
「test “hoge”.html」というファイル名を引数として指定する場合
"test ""hoge"".html"
helpコマンド
help open
winscp> help open
open <site>
open sftp|scp|ftp[es]|http[s] :// [ <user> [ :password ] @ ] <host> [ :<port> ]
Establishes connection to given host. Use either name of the site or
specify host, username, port and protocol directly.
switches:
-privatekey=<file> SSH private key file
-hostkey=<fingerprint> Fingerprint of server host key (SFTP and SCP only).
-clientcert=<file> TLS/SSL client certificate file
-certificate=<fingerprint> Fingerprint of TLS/SSL certificate
(FTPS and WebDAVS only)
-passphrase=<phr> Private key passphrase
-passive=on|off Passive mode (FTP protocol only)
-implicit Implicit TLS/SSL (FTP protocol only)
-explicit Explicit TLS/SSL (FTP protocol only)
-timeout=<sec> Server response timeout
-rawsettings setting1=value1 setting2=value2 ...
Configures any site settings using raw format
as in an INI file
-filezilla Load <site> from FileZilla site manager
examples:
open
open sftp://martin@example.com:2222 -privatekey=mykey.ppk
open martin@example.com
open example.com
openコマンド
例1.認証失敗
鍵認証設定している場合は、このコマンドだけでは接続不可
▼C:/Program Files (x86)/WinSCP/WinSCP.com
winscp> open 12.345.678.901
サーバを探索中・・・
サーバに接続しています・・・
認証しています・・・
ユーザ名(U): hoge
Disconnected: No supported authentication methods available (server sent: publickey,gssapi-keyex,gssapi-with-mic)
認証に失敗
winscp>
例2.認証失敗
秘密鍵ファイル名だけを指定しても、内容を確認できない
winscp> open 12.345.678.901:ポート番号 -privatekey=id_ppk.ppk
サーバを探索中・・・
サーバに接続しています・・・
認証しています・・・
Unable to use key file "id_ppk.ppk" (unable to open file)
ユーザ名(U):
★★
Disconnected: No supported authentication methods available (server sent: publickey,gssapi-keyex,gssapi-with-mic)
認証ログ (詳細はセッション ログを見て下さい):
Unable to use key file "id_ppk.ppk" (unable to open file)
認証に失敗
例3.認証成功
秘密鍵ファイル名へのパスを指定
winscp> open IPアドレス:ポート番号 -privatekey=秘密鍵までのフルパス
winscp> open 12.345.678.901:ポート番号 -privatekey=L:\0_Establishment\sakura_vps_keys\id_ppk.ppk
サーバを探索中・・・
サーバに接続しています・・・
認証しています・・・
ユーザ名(U):
★★
公開鍵 "" で認証中
認証されました
セッションを開始しています・・・
セッションを開始しました
アクティブ セッション: [1] 12.345.678.901
winscp>
例3.全コマンド履歴
winscp> open 12.345.6.78:ポート番号 -privatekey=L:\0_Establishment\sakura_vps_keys\id_ppk.ppk
サーバを探索中・・・
サーバに接続しています・・・
認証しています・・・
ユーザ名(U): ★★
公開鍵 "" で認証中
認証されました
セッションを開始しています・・・
セッションを開始しました
アクティブ セッション: [1] 12.345.6.78
winscp>
・コマンドラインオプション
・WinSCPのコンソールモードで、Disconnected: No supported authentication methods available
ファイルのダウンロード
ファイルのダウンロード
下記で使用しているコマンド解説
コマンド名 | 説明 |
---|---|
open ユーザー名@>ホスト</ディレクトリ> | 指定したホストに接続する |
cd <ディレクトリ> | リモート側のカレントディレクトリを変更する |
lcd <ディレクトリ> | ローカル側のカレントディレクトリを変更する |
ls | リモート側のファイル一覧を表示する |
get <ファイル名> | リモート側のファイルをダウンロードする |
exit <ファイル名> | WinSCPを終了する |
例1.
「123.45.6.78」というホストへ「★★」というユーザーでログインし、「/var/www/lib/mysql-backup」ディレクトリ内にあるすべてのテキストファイル(拡張子が.txtのファイル)をダウンロードする
winscp> open 12.345.6.78:ポート番号 -privatekey=L:\0_Establishment\sakura_vps_keys\id_ppk.ppk
サーバを探索中・・・
サーバに接続しています・・・ ←12.345.6.78へ接続
サーバを探索中・・・
認証しています・・・
ユーザ名(U):
★★
公開鍵 "" で認証中 ←「★★」というユーザーで接続
認証されました
セッションを開始しています・・・
セッションを開始しました
アクティブ セッション: [1] 12.345.6.78 ←セッション番号「1」としてセッションを開始
「/var/www/lib/mysql-backup」ディレクトリへ移動
winscp> cd /var/www/lib/mysql-backup
/var/www/lib/mysql-backup
リモート側のファイル一覧を表示
winscp> ls
-rw-r--r-- 1 root root 0 Oct 14 11:23:23 2014 dbbackup_20141014112323.
-rw-rw-rw- 1 root root 47 Mar 5 9:01:01 2017 db_all_backup-20170305.sql.gz
-rw-rw-rw- 1 root root 47 Mar 6 9:01:01 2017 db_all_backup-20170306.sql.gz
-rw-r--r-- 1 root root 1822802 Oct 14 11:14:56 2014 dbbackup_20141014111450.sql
-rw-r--r-- 1 root root 767137167 Oct 14 11:31:27 2014 dbbackup_20141014112943.sql
-rw-rw-rw- 1 root root 47 Mar 4 9:01:01 2017 db_all_backup-20170304.sql.gz
drwxr-xr-x 14 root root 4096 Feb 3 19:12:57 2017 ..
-rw-r--r-- 1 root root 767104571 Oct 14 11:07:00 2014 dbbackup_20141014110533.sql
-rw-r--r-- 1 root root 21649456 Apr 25 23:10:45 2016 ibj_sakura.sql
-rw-r--r-- 1 root root 983879627 Apr 25 21:52:18 2016 dbbackup_20160425212451.sql
-rw-r--r-- 1 root root 5 Jan 20 0:17:26 2017 hoge.txt
drwxrwxrwx 2 root root 4096 Mar 6 9:01:01 2017 .
ローカルのカレントディレクトリを「L:\2_Hp_data\bat」ディレクトリへ変更
winscp> lcd L:\2_Hp_data\bat
L:\2_Hp_data\bat
拡張子が「.txt」のすべてのファイルをダウンロードする
winscp> get *.txt
hoge.txt | 5 B | 0.0 KB/s | binary | 100%
WinSCPを終了する
winscp> exit
winscp> ls -la
不明なスイッチ 'la'
ディレクトリの同期
「synchronize」コマンド
「ローカルディレクトリ」と「リモートディレクトリ」の内容を比較し、更新されたファイルのみを転送
・「UNIX/Linuxのファイル同期rsyncコマンド」と同じ目的に利用できる
基本構文
「ローカルディレクトリ」と「リモートディレクトリ」を比較して「リモートディレクトリ」を更新(更新されたファイルをアップロードする)には?
・対象ホストへログイン後、「remote」オプション付きでsynchronizeコマンドを実行
synchronize remote <ローカルディレクトリ> <リモートディレクトリ>
「ローカルディレクトリ」と「リモートディレクトリ」を比較して「ローカルディレクトリ」を更新(更新されたファイルをダウンロードする)には?
・対象ホストへログイン後、「local」オプション付きでsynchronizeコマンドを実行
synchronize local <ローカルディレクトリ> <リモートディレクトリ>
例1.手順
ローカル側の「L:\2_Hp_data\bat」とリモート側の「/var/www/lib/mysql-backup」を同期させる
・「local」オプションが指定されているため、ローカル側にないファイルがローカル側にダウンロードされている
・「L:\2_Hp_data\bat」と「/var/www/lib/mysql-backup」の同期
「123.45.6.78」というホストへ「★★」というユーザーでログインし、「/var/www/lib/mysql-backup」ディレクトリ内にあるすべてのテキストファイル(拡張子が.txtのファイル)をダウンロードする
winscp> open 12.345.6.78:ポート番号 -privatekey=L:\0_Establishment\sakura_vps_keys\id_ppk.ppk
サーバを探索中・・・
サーバに接続しています・・・ ←12.345.6.78へ接続
サーバを探索中・・・
認証しています・・・
ユーザ名(U):
★★
公開鍵 "" で認証中 ←「★★」というユーザーで接続
認証されました
セッションを開始しています・・・
セッションを開始しました
アクティブ セッション: [1] 12.345.6.78 ←セッション番号「1」としてセッションを開始
「/var/www/lib/mysql-backup」ディレクトリへ移動
winscp> cd /var/www/lib/mysql-backup
/var/www/lib/mysql-backup
例1.全コマンド履歴
winscp> open 12.345.6.78:ポート番号 -privatekey=L:\0_Establishment\sakura_vps_keys\id_ppk.ppk
サーバを探索中・・・
サーバに接続しています・・・
認証しています・・・
ユーザ名(U): ★★
公開鍵 "" で認証中
認証されました
セッションを開始しています・・・
セッションを開始しました
アクティブ セッション: [1] 12.345.6.78
winscp> cd /var/www/lib/mysql-backup
/var/www/lib/mysql-backup
winscp> synchronize local L:\2_Hp_data\bat /var/www/lib/mysql-backup
比較中...
ローカル 'L:\2_Hp_data\bat' <= リモート '/var/www/lib/mysql-backup'
同期中...
ローカル 'L:\2_Hp_data\bat' <= リモート '/var/www/lib/mysql-backup'
db_all_backup-20170310.sq | 47 B | 0.0 KB/s | binary | 100%
db_all_backup-20170311.sq | 47 B | 0.2 KB/s | binary | 100%
db_all_backup-20170312.sq | 47 B | 0.3 KB/s | binary | 100%
dbbackup_20141014110533.s | 749125 KB | 3008.6 KB/s | binary | 100%
dbbackup_20141014111450.s | 1780 KB | 2936.0 KB/s | binary | 100%
dbbackup_20141014112323. | 0 B | 2907.7 KB/s | binary | 0%
dbbackup_20141014112943.s | 749157 KB | 2595.2 KB/s | binary | 100%
dbbackup_20160425212451.s | 960819 KB | 3112.6 KB/s | binary | 100%
ibj_sakura.sql | 21142 KB | 2461.3 KB/s | binary | 100%
winscp>
コマンドラインオプションの活用とバッチファイル連携
コマンドラインオプションの活用とバッチファイル連携
WinSCPにはさまざまなコマンドラインオプションが用意されている
・これらを利用することでWinSCPの起動直後に自動的に指定したサーバーに接続したり、ファイルのアップロードやディレクトリの同期を行うことができる
・また、後述するスクリプト機能を利用することで、複数のディレクトリへのアップロードやファイルの削除といった比較的複雑な処理も自動で実行できる
同期を行う「/synchronize」コマンドラインオプション
・「/synchronize <ローカルディレクトリ> <リモートディレクトリ>」というオプションを利用すれば、WinSCPの起動直後に指定したディレクトリ間の同期を実行することができる
ファイルのダウンロード
「/download <ファイル1> <ファイル2> …」オプションを利用すれば、指定したファイルをダウンロードできる
例
・「★★」というユーザーで「123.45.6.78」というホストに接続し、ローカル側の「L:\2_Hp_data\bat」というファイルをリモート側の「/var/www/lib/mysql-backup」というディレクトリにダウンロードするものだ。
"C:\Program Files (x86)\WinSCP\WinSCP.exe" ★★@123.45.6.78L:\2_Hp_data\bat /download "/var/www/lib/mysql-backup"
exitをコメントアウトして途中経過の表示も含め全てを確認
batch on
reconnecttime 120
confirm off
サーバを探索中・・・
サーバに接続しています・・・
認証しています・・・
ユーザ名"★★" を使用中
公開鍵 "" で認証中
認証されました
セッションを開始しています・・・
セッションを開始しました
アクティブ セッション: [1] ★★@12.345.678.901
比較中...
ローカル 'L:\2_Hp_data\bat\data' <= リモート '/var/www/lib/mysql-backup'
同期中...
ローカル 'L:\2_Hp_data\bat\data' <= リモート '/var/www/lib/mysql-backup'
db_all_backup-20170320.sq | 47 B | 0.0 KB/s | binary | 100%
db_all_backup-20170321.sq | 47 B | 0.2 KB/s | binary | 100%
dbbackup_20141014110533.s | 749125 KB | 2273.7 KB/s | binary | 100%
dbbackup_20141014111450.s | 1780 KB | 2016.1 KB/s | binary | 100%
dbbackup_20141014112323. | 0 B | 2002.2 KB/s | binary | 0%
dbbackup_20141014112943.s | 749157 KB | 2486.4 KB/s | binary | 100%
dbbackup_20160425212451.s | 960819 KB | 2681.0 KB/s | binary | 100%
hoge.txt | 5 B | 2446.0 KB/s | binary | 100%
ibj_sakura.sql | 21142 KB | 2366.5 KB/s | binary | 100%
セッション '★★@12.345.678.901' を閉じました.
セッションなし
winscp>
後日実行
・処理途中画面
batch on
reconnecttime 120
confirm off
サーバを探索中・・・
サーバに接続しています・・・
認証しています・・・
ユーザ名"★★" を使用中
公開鍵 "" で認証中
認証されました
セッションを開始しています・・・
セッションを開始しました
アクティブ セッション: [1] ★★@12.345.678.901
比較中...
ローカル 'L:\2_Hp_data\bat\data' <= リモート '/home/★★/backup'
同期中...
ローカル 'L:\2_Hp_data\bat\data' <= リモート '/home/★★/backup'
db_all_backup-20170323.sq | 120080 KB | 11348.3 KB/s | binary | 64%
・コマンドリファレンス
Windowsのタスクスケジューラ経由でバッチファイルを実行 / 失敗
1.Windowsのタスクスケジューラを起動
コントロールパネルを表示するまで
・画面左下にある「スタートボタン」右クリック→「コントロールパネル」選択
コントロールパネル
・左上の「システムとセキュリティ」テキストリンクをクリック
システムとセキュリティ
・「管理ツール」内にある「タスクスケジューラ」テキストリンクをクリック
2.新規フォルダ作成
この手順は飛ばしても良い
・後で分かりやすいようにしているだけ
3.基本タスクの作成
画面右側の「基本タスクの作成」をクリック
感想
事前予想
・物凄く難しいのだろう、と考えていた
・調査すること自体が憂鬱だった
実際に試してみたら
・物凄く簡単だった
・GUI操作なので、迷うところはなかった
失敗
翌日、PC起動してみたら
・タスクスケジュールが実行されていないことが判明
理由
・不明
スクリプト機能
コマンドラインオプション
コマンドリファレンス
WinSCPとBunBackupで定期バックアップするバッチ
windows10で、システム起動時に、バッチ処理実行
スタートアップフォルダへ、バッチファイルショートカットを配置するだけ
・Windows10 起動時にアプリを自動起動 - スタートアップに登録
・もしかするとPC起動が遅くなるかも、と思ったが、全然そんなことはなかった
・PC起動中にバッチ処理するわけではなく、PC起動後にバッチ処理を実行するため
ようやくやりたかったことを実装出来た
・200日かかった
・2016-9-10 → 2017-3-29
心残り
・shファイルにDBパスワードを直書しないようmysql_config_editor ユーティリティーで設定したつもりだったが、その方法ではdumpデータをどうしても正常取得できなかった
・最終的には、shファイルにDBパスワードを直書するよう妥協
・CentOSでMySQL自動バックアップ
・「CentOSで自動バックアップしたdumpデータ」と「Windwos指定ディレクトリ」との同期(ダウンロード)
・Windows10 起動時にアプリを自動起動 - スタートアップに登録
感想
・もしかするとPC起動が遅くなるかも、と思ったが、全然そんなことはなかった
・PC起動中にバッチ処理するわけではなく、PC起動後にバッチ処理を実行するため
振り返り
ようやくやりたかったことを実装出来た
・200日かかった
・2016-9-10 → 2017-3-29
心残り
・shファイルにDBパスワードを直書しないようmysql_config_editor ユーティリティーで設定したつもりだったが、その方法ではdumpデータをどうしても正常取得できなかった
・最終的には、shファイルにDBパスワードを直書するよう妥協
・CentOSでMySQL自動バックアップ
・「CentOSで自動バックアップしたdumpデータ」と「Windwos指定ディレクトリ」との同期(ダウンロード)