windows機にsshでリモートログイン

Cygwinが入ってるとそんなこともできるんですねぇ。
nfsのサーバーも立つってさ。でもnfsクライアントはうまく動かないらしい。。。

やり方


  1. 念のためバージョンを確認します。

    $ uname -r
    1.5.24(0.156/4/2)
    

    ちなみにwindowsのアカウント名が日本語の人は無理かも。


  2. cygwin環境ののパスワードを設定する。すでに設定済みの人は飛ばす。これがsshでログインするときのパスワードになる。アカウントは今のwindowsのアカウント名でログインします。

    $ passwd
    Enter the new password (minimum of 5, maximum of 8 characters).
    Please use a combination of upper and lower case letters and numbers.
    New password:
    Re-enter new password:
    Password changed.
    



  3. スクリプトを使ってsshdの設定をする。

    $  ssh-host-config -y 
    

    -y オプションはスクリプト中でyes/noと聞かれる場面をすべてyesにするオプション。無くても構わない。
    これで/etc内にssh_configとsshd_configができる。

  4. んでsshd-configを設定しましょう。ここは設定をしなくても下に進めます。安全性を考えるならきっちりやるべきでしょうねぇ。

  5. んでsshdの起動をする。

    $ cygrunsrv -S sshd
    $
    

    何も出力されませんがこれで起動完了。
    (何か出力してくれてもいいと思うんだけどなぁ。)
    ちなみに、-S を -E にすると停止。
    つまり

    $ cygrunsrv -E sshd && cygrunsrv -S sshd
    

    で再起動。sshd_configを編集したら設定反映をするためにコレ必要ネ。

  6. 確認作業。

    $ ssh localhost
    # ここでパスワードを聞かれるので、
    # 先程passwdで設定したパスワードを入力します。
    

これで、ローカルからsshでログインができるようになりました。何に使うかわかりませんが。



sshでリモートログイン

おまけ。ってかこれやらないと上の作業が全部無意味じゃなかろうか。
これに成功すれば同じネットワーク内のPCなら、上記のwindows機にログインできます。
リモートログインってやつです。

windowsのファイウォールの設定を変更する。でないと、他のPCからのsshログインのリクエストを全部捨ててしまう。(パケット的な意味で)
以下の作業はsshホスト側の作業です。


  1. コントロールパネル → Windows ファイアウォール



  2. 出てきたウィンドウの[例外]のタブを選択



  3. [ポートの追加]ボタンを押す。名前をsshd、ポート番号を22と設定。(名前はなんでもOK)



  4. ifconfigとかで、ホストのipアドレスを覚えておく。
    ここでは仮に111.111.1.1とする。
    (ホストに名前が付いてるなら、いらないかな。)


ホスト側はこれでおしまい。

そしてクライアント側で

$ ssh ホストのアカウント名@111.111.1.1
# さっきと同様、パスワードを入力

で、完了。
うまく行かなかったら。。。
ホスト側の/etc/hosts.allowとか/etc/host.denyが悪さしてる。。。かも。
/etc/sshd_configを編集した人はそこも確認してください。
んでsshd_cofigを書き替えたら設定を反映させるために、sshdの再起動を忘れずに。