FXボーグ | テクニカル実験室

テクニカル分析を使った自動売買プログラムの開発に挑戦!

スポンサーリンク

Windows Server2012R2にSSHデーモンを導入(MSYS2+Cygrunsvr+OpenSSH)

Windwos Server2012R2にSSHサービスを導入したのですが、MS公式の「Win32-OpenSSH」がこける為、いろいろ試した中で最終的にMSYS2版を採用しました。

どうして急にSSHサービスかと言うと・・・ ネットで「CPU×2/メモリ6GB/HDD500GB」で月額12$という激安VPSというのを見かけて、Windowsにも対応しているのでcAlgo用に契約してみました。

・・・ただ、Windowsの操作にリモートデスクトップを使うのですが、これはセキュリティ的に考えてかなり不安です。そこで調べた結果「SSHポートフォワーディング」なるものを行えば鍵交換方式の認証をプラスできるそうです。

自堕落な技術者の日記 : PuttyのSSHポートフォワーディングで自宅PCのリモートデスクトップ

そこで、いろいろ躓きながらもSSHサービスを導入しました。ポートフォワーディングは未設定ですが、ここまでの手順を備忘録として残しておきます。

 リモートデスクトップのセキュリティ

リモートデスクトップにはユーザー名とパスワードが漏れれば、簡単に乗っ取られてしまうという危険があります。この対策として「RDゲートウェイ」というものがあります。

これはこれでよさそうですが、この為にIISを立ち上げるのは「なんかやだな」と思ったので、まずはSSHポートフォワーディングを試すことにしました。

Win32-OpenSSH

WindowsでSSHサービスをインストールするにはだいたい以下の3パターンがあるかと思います。

  1. ・Win32-OpenSSH(公式のWindows版OpenSSH)
  2. ・Cygwin (Linuxの機能を提供するDLLがベース)
  3. ・MSYS2(Windows上のUnixシェル環境)

はじめは「Win32 OpenSSH 」を試していたのですが、秘密鍵の読み込み時にエラーを吐くので断念しました。以下に参考となったリンクを残します。

  1. Windowsにsshd、sftp-serverの実行環境を構築する
  2. Install Win32 OpenSSH · PowerShell/Win32-OpenSSH Wiki

優秀なMSYS2

残るは「Cygwin」と「MSYS2」になりますが、以下の記事によるとMSYS2がよさそうです。

またMSYS2の競合相手としてCygwinが挙げられるが、こちらは使う人を選ぶ。使いにくいパッケージインストーラー、独特のパス(cygdrive)、cygwin1.dll依存という問題があるからだ。


パッケージインストーラーの問題はapt-cygがあるので緩和されたが、最初にwgetかcurlまたはgitをいれておかないと、apt-cygスクリプトのダウンロードにも手間がかかる。パスの設定もめんどくさいので、その辺りを自動で行ってくれるMSYS2の方が便利だ。

MSYS2で快適なターミナル生活 - Qiitaより 引用)

MSYS2のインストール

MSYS2のインストールは簡単で、http://www.msys2.org/ からダウンロードして、セットアップを実行すると「次へ」だけで完了します。インストールが完了すると「C:\msys64」にプログラムが配置され「msys2.exe」をクリックすることで起動できます。

さらに、本家のインストール説明にしたがって「pacman」コマンドにてパッケージのアップデートを行います。

この際は更新がなくなるまで、コンソールを閉じては開きアップデートという作業を繰り返す必要があります。

SSHデーモンのインストール

sshデーモンをインストールするシェルがこちらに用意されています。

Configure sshd on MSYS2 and run it as a Windows service

シェルを実行する前に依存するパッケージをインストールします。

msys2.exeを起動して

pacman -S openssh cygrunsrv mingw-w64-x86_64-editrights

と入力しエンターします。

f:id:fxborg:20170401112125p:plain

インストールが完了したら、スクリプトをダウンロードします。これには

wget  https://gist.githubusercontent.com/samhocevar/00eec26d9e9988d080ac/raw/3dfeffef2bec8134d38cad8ff92f931b228ee7ba/gistfile1.sh

と入力します。

f:id:fxborg:20170401112537p:plain

最後に「./gistfile1.sh」と入力しエンターするとシェルが実行されます。

f:id:fxborg:20170401112940p:plain

文字化けしていますが、サービス管理画面をみるとMSYS2 sshdデーモンがインストールされたようです。

f:id:fxborg:20170401113327p:plain

SSHデーモンの設定

SSHデーモンの設定は「/etc/ssh/sshd_config」ファイルにて行います。公開鍵のみ接続を許可するには以下の設定が必要です。

PubkeyAuthentication yes
PasswordAUthentication no
ChallengeResponseAuthentication no

このあとはLinuxと変わらないので他の記事が参考になります。

接続確認

 最後に、自宅のパソコンからSFTPで接続してみると・・・

f:id:fxborg:20170401115501p:plain

 正常に応答してきました。パスフレーズを入力すると・・・

f:id:fxborg:20170401115659p:plain

 無事ログインできました。