home / uni / cygsshd Cygwinでsshサーバー

 sshdはCygwinでも動かすことができる。つまり、WindowsマシンをSSHサーバーにすることができる。NT系ではサービスにすることも可能。

●sshのインストール
 setup.exe で Net - openssh をインストールする。依存関係で自動的にopensslもインストールされる。サービス化したい場合は Admin - cygrunsrv もインストールする。
●ホスト設定
 ssh-host-configを実行する。 Privilege Separation は sshd というユーザーと/var/emptyというディレクトリが必要になる(自動で作成される)ので、それがいやならば no と答える。 サービス化は必要に応じて設定するが、サービス化してしまうと動作チェックが面倒になるので、自信のない人はとりあえず no と答えておけばよい。
●サーバー起動
 とりあえずテストしたい場合は、この状態でCygwinのbashから/usr/sbin/sshd -Deとすると、デーモンにならず、ログを標準エラーに吐き出しながら動作する。 この状態でクライアントから接続を受け付けられるようになっているはずなので、接続してみるとよい。 ファイアウォールに関するメッセージが出ることがあるので、適当に対処すること。 一時的に立ち上げたい場合もこの方法が向いている。

 サービス化せずにデーモンとして常駐させる場合は、何もオプションを付けずに/usr/sbin/sshdと打ち込めばSSHデーモンが立ち上がる。 標準の状態では問題ないはずだが、アクセス権をいろいろいぢっていると各種ファイルが読み込めなくて起動しない場合がよくある。 特に、/etc/ssh*というファイルのアクセス権に注意すること。基本的にAdmininstrator(面倒なので以後Adminと書く)かSYSTEMの持ち物で、*.pubで終わるファイルは持ち主が読み書き可、他は読み込みのみ可である。後ろにpubがないssh_host_*_keyは持ち主のみ読み書き可のはずである。

●サーバー終了
 デーモンにしていない場合はCtrl+Cで止めればよい。 デーモンにした場合はpsコマンドでsshdのプロセスIDを確認し、killで止める。あるいは、/var/run/sshd.pidにプロセスIDが書いてあるので、kill `cat /var/run/sshd.pid`でも止まる。なお、デーモンを立ち上げたままbashを終了すると窓が消えない。この場合、Windowsのタスクマネージャーからsshdを終了させればよい。
●サービス化
 ssh-host-configでサービス化の時に yes と答える。すでに設定が終わっているsshdをサービス化する場合、「設定ファイルをオーバーライトするか?」の問いには no と答えていけばよい。これでWindowsのサービスとなるので、Windowsのコントロールパネルから起動・終了を制御できるようになる。コマンドラインから起動したい場合、cygrunsrv -S sshd(Cygwinから)あるいはnet start sshd(Windowsから)などとすればよい。

 サービスを削除したい場合はcygrunsrv -R sshdとする。

 サービス化すると各種設定ファイルの持ち主がSYSTEMになり、設定ファイルを書き換えられなくなったりする。この場合、Windowsで適宜アクセス権を書き換えて使うとよい。サービスを削除してもこれは戻らないので注意。

 サービス化した場合にうまく動かない場合、Windowsのイベントビュアーに各種メッセージが残るので、これを見ると解決策が分かる場合がある。

●その他
 SSHはTCPポート22を使うので、このポートを開けておく必要がある。

Copyright (C) 1997-2012 You SUZUKI

$Id: cygsshd.htm,v 1.4 2012/12/11 03:31:56 you Exp $