OpenSSH for Windows

(2012.2.24-2013.8.27, 2016.7.25)

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

インストール

cygwinから最新のインストールファイルsetup.exe(64ビットWindowsを使っている場合はsetup-x86_64.exe)をダウンロード,実行してインストールをおこなう。 オプションなどは,以下を除いて標準のままでよい.Windows7では[管理ユーザとして実行]すること。 プログラムはc:\cygwin(またはc:\cygwin64)にインストールされる。

ホストキーの作成

Cygwin(64) 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

#RSAAuthentication no
RSAAuthentication yes
PubkeyAuthentication yes
#AuthorizedKeysFile .ssh/authorized_keys
AuthorizedKeysFile /etc/authorized_keys
#PasswordAuthentication yes
PasswordAuthentication no
そして,クライアントの公開鍵(テキスト)を /etc に
authorized_keys
というファイルをつくってその中に貼り付ける. viを使えばよい.パーミッションは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(またはsetup-x86_64.exe)を実行する。Windows7では[管理ユーザとして実行]すること。

アンインストール

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

参考

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