cygwinを利用し、windows上でsshのサーバを立ち上げる方法です。これによりputtyのようなsshクライアントで、windowsをリモートからCUIで操作できるようになります。
cygwin側の設定
先ずadministrator権限でbashを起動します。cygwinにはrootというアカウントが無く、suもsudoも用意されていません。/etcの下のファイルをいじる場合などは、WindowsのスタートメニューからCygwin Bash Shellを選び、右クリックして"管理者として実行"を選ぶなどして、管理者権限でbashを起動します。
bashが起動したら、コマンドプロンプトでchmodコマンドを実行して、ファイル・ディレクトリのパーミッションを変更します。
$ chmod +r /etc/passwd $ chmod +r /etc/group $ chmod a+rx /var
次にsshdの設定を行います。といっても、専用のスクリプトが用意されているので、それを利用するだけです。
$ /usr/bin/ssh-host-config -y
このスクリプトが
*** Info: Host configuration finished. Have fun!
と出力すれば設定は成功です。
このスクリプトにより
が生成されます。また Privilege separation*1 用に sshd というアカウントが作成されます。
以上で設定はおしまい。
アクセス制限の解除
次に windows の firewall に穴を開け、外部からsshでログインできるようにします。
windows側で cmd.exe を起動して
> netsh firewall show portopening > netsh firewall add portopening TCP 22 sshd > netsh firewall show portopening
とします。
以上で、外部からsshで接続できるようになります。
また、接続元のIPアドレスを制限することも出来ます。方法は、こちら。
トラブルシューティング
調査方法1)うまくいかない場合は
$ ssh localhost -vvvv
と "-v" オプションをたくさんつけて実行すると何かわかるかもしれません。
調査方法2)windowsのfirewallのログを確認すると何かわかるかもしれません。
調査方法3)windows側のセキュリティソフトがinstallされているのであれば、sshdが使用する22番ポート(TCP)のアクセス制限が解除できているか確認します。
*1:ログイン時の認証処理を安全に行うための仕組み