kilin> how to> OpenSSH for Windows

OpenSSH for Windows

(2012.2.24-2013.8.27, 2016.7.25)

sshサーバをwindowsにインストールする.SSHターミナルでコマンドプロンプトが使え,SCPやsftpでファイル転送ができるようになる.
(環境) WindowsXP SP3, Windows 7 pro (32,64), Windows10 pro (64), CentOS 5.6-6.2, TeraTerm4.67, WinSCP 4.29

インストール:

cygwinから最新のインストールファイルsetup.exe(64ビットWindowsを使っている場合はsetup-x86_64.exe)をダウンロードして,setu.exe(setup-x86_64.exe)を実行してインストールをおこなう。オプションなどは,以下を除いて標準のままでよい.Windows7では[管理ユーザとして実行]すること。
[Cygwin Setup - Choose Download Site]ダイアログボックスでは,日本の(.jp)サイトを選ぶ.
[Cygwin Setup - Select Packages]ダイアログボックスでは,次のパッケージを選ぶ.
Category Package 説明 
Admin cygrunsrv 必須 
Editors  vim  エディタ 
Net openssh 必須 
  openssl 必須 
  rsync 入れておくと便利。例えばLinuxサーバーにファイルのバックアップができる。
プログラムはc:\cygwinにインストールされる(64ビットWindowsの場合はc:\cygwin64)。

ホストキーの作成

Cygwin Terminal(Windows7では[管理ユーザとして実行]すること)から次のコマンドを入力
$ ssh-host-config -y
(Windows7の場合は,cyg_server, Windows10の場合はPrivileged serverというWindowsのユーザが作られる。そのパスワードを決めて,入力する)

設定ファイルの編集

パスワードログインを禁じ,クライアントの公開鍵を使ってログインできるように(SSH参照),viで /etc にある
sshd_config
ファイルを次のように編集する。
$ cd /etc
$ vi sshd_config
#StrictModes yes
StrictModes no

#RSAAuthentication no
RSAAuthentication yes
PubkeyAuthentication yes
#AuthorizedKeysFile .ssh/authorized_keys
AuthorizedKeysFile /etc/authorized_keys
#PasswordAuthentication yes
PasswordAuthentication no
そして,クライアントの公開鍵(テキスト)を /etc
authorized_keys
というファイルをつくってその中に貼り付ける.viを使えばよい.公開鍵は,このファイルにいくつ貼り付けてもOK.パーミッションはgo-rwxとする。

サービスの開始

[マイコンピュータ]を右クリックして[管理](Windows7ではコントロールパネルの[管理ツール])をクリックして,[サービス]のCYGWIN sshdの項目をクリックして,サービスを開始する.opensshが,コンピュータの起動時に自動起動するように設定されていることがわかる.自動起動を止めたり,サービスを停止することも,ここでできる.

ファイアウォールTCP 22番ポートを空ける

WindowsXPの場合,[コントロールパネル]の[Windowsファイアウォール]を開き,[例外]タブで[ポートの追加],[名前]にSSH,[ポート番号]に22を入力し,[TCP]を選択する.
Windows7/10の場合は,[コントロールパネル]の[Windowsファイアウォール]を開き,[詳細設定]の[受信の規則], [新しい規則]をクリックし,[ポート], [TCP], を選び,[特定のローカルポート]に22,[接続を許可する],そして[ドメイン],[プライベート],[パブリック]すべてに適用して,[名前]をSSHにする。

ログイン

以上で,TeraTermからも,WinSCPからも,Linuxからも,ログインできる.RSA鍵を使ってログイン参照
なお,WinSCPでは,ディレクトリのルート / が C:\cygwin になる.WinSCPでこの外のディレクトリに移動したい場合は,ログイン時のディレクトリを
/cygdrive/
としておけばよい./cygdrive/ の下に,各ドライブのルートがドライブ文字のディレクトリとしてマウントされているので,PCの全フォルダにアクセスする事ができる.また,文字コードはUTF-8.
(注意)より簡便な OpenSSH for Windowsでは,全角文字がファイル名に入ったファイルはダウンロード/アップロードできない.

アップデートやモジュールの追加

インストールファイルsetup.exe(64ビットWindowsを使っている場合はsetup-x86_64.exe)を実行する。Windows7では[管理ユーザとして実行]すること。

アンインストール

アンインストーラはついていないので,cygwinのFAQ, How do I uninstall all of Cygwinを読んでアンインストールする。アンインストールの流れ:cygrunsrvコマンドで全てのサービスをリストアップして,停止して,削除してから,インストールフォルダ(c:\cygwinあるいはc:\cygwin64)を削除する。

参考

Cygwin, cygwin (2011.5.24)
SSHWindows.SourceForge.Net, http://sshwindows.sourceforge.net/ (2011.5.5)
OpenSSHのセットアップ手順, http://micro-vnc.jp/documents/archieve/sshwindows/ (2011.5.5)
OpenSSH for WindowsとRDP, http://www.playing-engineer.com/?p=191 (2011.5.5)
CygwinのOpenSSHを使って安全に自宅のWindowsにアクセス, http://sites.google.com/site/himazu/ssh-on-cygwin (2011.8.25)