Webセキュリティの小部屋

Twitter のフォローはこちらから Facebook ページはこちら Google+ページはこちら RSSフィードのご登録はこちらから
公開日:2015年10月22日
最終更新日:2015年10月23日

Windows 版 OpenSSH が登場したので使い方を解説してみる

はじめに

Windows を SSH でコマンドラインから制御したいという要望は、Windows のサーバー管理者の長い間の願いでした。2015年の6月頃に Microsoft が OpenSSH を Windows に移植すると発表して大分経ちましたが、数日前、ようやくプレリリース版がリリースされました。

この記事では、 Windows 版の OpenSSH の使い方を解説します。なお、プレリリース版での解説なので、正式版が登場した場合には仕様が変わっている可能性があることをご了承ください。正式版は 2016年前半にリリースが予定されています。

事前準備

以下のサイトより、OpenSSH-Win32.zip ファイルをダウンロードして ZIP ファイルを展開します。ここでは、 C:\OpenSSH-Win32 に展開したとして解説していきます。

OpenSSH サーバーの設定

ホストキーの生成

OpenSSH サーバーのホストキーを下記コマンドで生成します。コマンド実行時にパスフレーズを聞かれますが、何も入力しないで Enter キーを入力します。

 

ファイアウォールの設定

次に Windows のファイアウォール の SSH の 22番ポートを開放します。PowerShell を管理者権限で起動して、以下のコマンドを実行します。

 

SSH デーモンをシステム権限で実行する方法

ここで c:\OpenSSH-Win32 にある、setup-ssh-lsa.cmd を管理者権限で実行し、Windows を再起動します。

その後、SysInternals から PSTools をダウンロードして、ZIP ファイルを展開後、以下のコマンドを実行します。

すると子ウィンドウが表示されるので、 sshd.exe をその画面で実行します。

なお、以下のようにもコマンドを実行可能です。

これにより、タスクスケジューラで Windows の起動時に OpenSSH を実行することが可能になります。
 

Admin 権限で SSH デーモンを実行する方法

secpol.msc を実行(ファイルを指定して実行等)して、ローカルセキュリティポリシーを起動します。

その後、ローカルポリシー >> ユーザー権限の割り当て >> プロセスレベルトークンの置き換え で、OpenSSH サーバーを実行する Admin 権限を持つユーザーを追加後、一度、ログアウトして、ログオンし直します。

それから管理者権限でコマンドプロンプトを起動し、sshd.exe を実行します。

なお、現時点ではこの方法では公開鍵認証によるログインはうまくいかないようです。

 

OpenSSH クライアントの利用方法

通常のログイン方法

Windows 版 OpenSSH は、コマンドプロンプトを起動して、以下のようにサーバーにログインします。

ログイン後は、普通の DOS コマンドを実行できるようになります。

また、PowerShell を起動してログインした場合は、PowerShell のコマンドを実行できます。

なお、Mac のターミナルからログインしたら日本語が文字化けしてしまいました。これはエンコーディングが UTF-8 になっているためです。Windows 版 の OpenSSH ではエンコーディングを Shift_JIS にする必要があります。

 

公開鍵認証によるログイン

OpenSSH サーバーの設定

公開鍵認証によるログインを行うためには、まず OpenSSH の設定を変更する必要があります。

c:\OpenSSH-Win32 に、sshd_config ファイルがあるので、これをまず編集します。

設定を保存したら、OpenSSH を再起動します。

公開鍵認証の設定

以下のコマンドで公開鍵・秘密鍵のキーペアを作成します。

公開鍵(id_rsa.pub)は各ユーザの以下のフォルダに authorized_keys という名前で保存します。(.ssh フォルダはユーザーごとに作成)

これで設定が済んだので、公開鍵認証によるログインを以下のように行います。

SFTP の設定

Windows 版 OpenSSH には、SFTP の機能も実装されています。

SFTP サーバーは、sftp-server.exe のバイナリで、OpenSSH のサブシステムとして提供されます。そのため、設定ファイルは OpenSSH と同じ sshd_config を使用します。

SFTP サーバーを使用するためには、sshd_config を以下のように編集する必要があります。

編集が済んだら、OpenSSHを再起動します。SFTP サーバーも自動的に再起動されます。

 

SFTP クライアントの利用方法

SFTP サーバーには、基本的に OpenSSH サーバーと同じ要領でログインします。

なお、OpenSSH では C:\ からアクセスできましたが、SFTP では C:\ がルート扱いになっており、/OpenSSH-Win32 というようにアクセスする必要があるのでご注意ください。分かるまではまりました。

SFTP には他にも以下のコマンドがあります。

  • pwd : リモートのカレントパスを表示
  • lpwd : ローカルのカレントパスを表示
  • cd : リモートのパスを変更
  • lcd : ローカルのパスを変更(\ は \\ にする必要あり)
  • get file1.txt : リモートからローカルにファイルをダウンロード
  • put file1.txt : ローカルからリモートにファイルをアップロード
  • exit : 終了

おわりに

Windows 版の OpenSSH の機能を解説してきましたが、いかがだったでしょうか。基本的な機能は実装されていますし、プレリリースということを考えると、なかなかよくできていると思います。

Windows で OpenSSH を利用できるようになることで、リモートからサーバーを操作したり、バッチを走らせることができるようになりますね。可能性が広がるので今後に期待です。

参考サイト


スポンサーリンク




カテゴリー:ブログ

Twitter でも、いろんな情報を発信しています。



コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA