【VBScript(WSH)】WindowsServer2016のコマンドプロントでSFTPを動かす方法
【VBScript(WSH)】WindowsServer2016のコマンドプロントでSFTPを動かす方法
私の構築したい環境がWin Server 2016だったのでタイトルはこうなってますが、Windows10以外の『SSH接続を標準装備していないWindowsPC』に共通で使える方法です。
段取りは次の通り。
- OpenSSH-Win64.zipをダウンロード
- DLしたファイルを解凍して任意のフォルダへコピー
- ファイルにパスを通す
OpenSSH-Win64.zipをダウンロード
公式サイトからOpenSSHをダウンロードします。
https://github.com/PowerShell/Win32-OpenSSH/releases
基本的に最新をDLして問題ありません。が、Win64かWin32かは間違えずに取得します。
WinServerの場合はもれなく64Bitだと思うので『OpenSSH-Win64.zip』の取得を行います。
ダウンロードしたファイルを解凍して任意のフォルダへコピー
Downloadは1分もあれば終わります。
その後は任意のフォルダに解凍し移動(コピー)します。
私の場合は、C:\Windows に移しました。
ファイルにパスを通す
次の手順で行います。
- 適当なファイルを開く
- エクスフローラのアドレスバーに『コントロール パネル\すべてのコントロール パネル項目\システム』を入れてEnter
- システム画面に遷移
- 『システムの詳細設定』をクリック
- システムのプロパティが開く
- 環境変数タブを選択
- 下段にあるボタン『環境変数(N)...』をクリック
- 環境変数画面が開く
- 下段システム環境変数(S)の『新規(W...)』をクリック
- 変数名(N)に path と記入
- 変数値(V)に C:\Windows\OpenSSH-Win64 と記載 ※設置したOpenSSH-Win64までのパスを記載
- OKをクリックして確定
- 環境変数のOKボタンをクリック
- システムのプロパティをOKボタンを押して閉じる
これでパスが通るので後はコマンドプロントで確認作業です。
コマンドプロントでSSHにパスが通ったか確認する
コマンドプロントを起動し【 ssh 】と記載してEnterを押します。
C:\Users\dtpc>ssh
usage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-B bind_interface]
[-b bind_address] [-c cipher_spec] [-D [bind_address:]port]
[-E log_file] [-e escape_char] [-F configfile] [-I pkcs11]
[-i identity_file] [-J [user@]host[:port]] [-L address]
[-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
[-Q query_option] [-R address] [-S ctl_path] [-W host:port]
[-w local_tun[:remote_tun]] destination [command]
こんな画面が出てきたらパスが通っています。
コマンドが無い等のメッセージが出てきた場合は 『変数値(V)』に記載した値に間違いが無いか確認しましょう。
SSHが通ればSFTPは使える
ここまでSSHの設定として記載していますが、SSHが通ればSFTPはコマンドを変更するだけです。
C:\Users\dtpc>sftp 接続名 'configに書いていない場合' C:\Users\dtpc>sftp ユーザー名@ServerIP
まとめ
今まではFTPアップロードをFileZillaにて実行していましたが、自動化すると『更新アナウンス』に阻まれて上手く動かない事が多々ありました。
でも、こうやってコマンドプロントから実行する形にすると「予定外の画面遷移」を無視する事が出来ます。
便利ですねぇ。
サーバー側はOpenShellで操作するのが通常の動かし方なのだとは思います。
参考記事も多くはOpenShellを利用するものでした。
私の場合は『Windows10でもWindowsServerでも同じスクリプトで動く』環境を必要としています。
その為、汎用性の高いコマンドプロントからの動作に拘りこんな構築にしました。


