日々様々なトラブルにハマっている、困ったシステム管理者の奮闘日記です。

WindowsでSSHデーモンを実行

MSに配置されたWindows Server 2003 R2マシンに対し、UNIX系マシンと同様なセキュアなリモートメンテナンス環境を導入すべく、Windows上でSSHデーモンを稼動させる方式を模索。

OpenSSH for Windows というものもあったが、バージョンが3.8p1と古めでしばらくメンテナンスされていない様子なのでこれは止めておくことにする。

あとはSUA(Subsystem for UNIX-based Applications)の機能としてInterrixから提供されているOpenSSHを導入する手があるので、これを採用。
(OpenSSHのバージョンも4.6で最近もアップデートされているようなのでとりあえず安心。)

以下、ややハマった箇所もあったので導入メモを残す。

SUAの導入

  1. 「プログラムの追加と削除」から「UNIX ベース アプリケーション用サブシステム」を選択する。

  2. 「はい」をクリック
  3. Internet Explorerが開き、SDK for UNIX-based Applications のページを表示するので、右端の「Utilities SDK」のダウンロードリンクをクリック。
  4. 「Download files below」をクリック
  5. 「Utilities and SDK for UNIX-based Appications」の各CPUアーキテクチャに合ったファイルをダウンロードする
  6. 「実行(R)」をクリック
  7. 自動的にWinZip自己解凍プログラムが起動するので、「Unzip」をクリック
  8. しばらくすると、セットアップウィザードが起動するので、「Next >」をクリック
  9. 「User name」と「Organization」を設定し、「Next >」をクリック
  10. 「I accept the agreement」を選択し、「Next >」をクリック
  11. 「Custom Installation」を選択し、「Next >」をクリック
  12. 以下を選択し、「Next >」をクリック
    • Base Utilities
    • SVR-5 Utilities
    • Base SDK
    • GNU Utilities
    • GNU SDK

  13. 「Next >」をクリック
  14. 「Enable setuid behavior for SUA programs.」と「Change the default behavior to case sensitive」を両方選択し、「Next >」をクリック
  15. 「Finish」をクリック
  16. 再起動を要求してくるので、「Yes」をクリック
  17. 再起動後、メニューに「Subsystem for UNIX-based Applications」が追加されていることを確認

パッケージ管理ツール(pkg)の導入

Interop Systemでaddon-tools(http://www.suacommunity.com/)という、よく使用するツール類をパッケージにしているものが用意されている。しかし、私の環境ではこのaddon-toolsを導入すると、各ツールがうまく動作しなかった。
例えば、addon-tools導入後、bashを起動させると下記のメッセージを表示し起動しない現象が発生。

bash: error in loading shared libraries
: undefined symbol: __freeaddrinfo

また、ssh起動時に、

ssh:error in loading shared libraries
/usr/lib/libdl.so.5.2: undefined symbol:__argv

というメッセージを表示し、sshデーモンが起動しない現象が発生した。

LD_LIBRARY_PATHの追加、等いろいろとやってみたのだがどうもうまく動作しない。よって、パッケージ管理ツールを導入後、必要なツールを個別にインストールしていくことにする。

  1. Interopsystem の下記サイトより、対象となるマシンのアーキテクチャに合ったpkgインストール用シェルスクリプトをダウンロード
    http://www.interopsystems.com/tools/pkg_install.htm
  2. ダウンロードしたファイルを、/tmp(C:\windows\SUA\temp)にコピー
  3. Kornシェルを起動し、以下のコマンドを実行
    $ cd /tmp
    $ sh ./pkg-current-bin35.sh
  4. 途中で「Member」と「Password」の入力を促されるので、Administratorのユーザ名とパスワードを入力
  5. 結果、下記プログラムがインストールされる
    usr/local/bin/pkg_add
    usr/local/bin/pkg_create
    usr/local/bin/pkg_delete
    usr/local/bin/pkg_info
    usr/local/bin/pkg_sign
    usr/local/bin/pkg_update
    usr/local/bin/tkpkg
    usr/bin/ls
    usr/local/bin/gzip
    usr/bin/sort
    usr/local/man/cat1/pkg_add.1
    usr/local/man/cat1/pkg_create.1
    usr/local/man/cat1/pkg_delete.1
    usr/local/man/cat1/pkg_info.1
    usr/local/man/cat1/pkg_sign.1
    usr/local/man/cat1/pkg_update.1
    usr/local/man/cat1/gzip.1
    usr/share/man/cat1/ls.1
    usr/share/man/cat1/sort.1
    bin/ftp
    bin/ftp-ls
    bin/pax
    bin/tar
    usr/share/man/cat1/pax.1
    usr/share/man/cat1/ftp.1
    usr/share/man/cat1/tar.1
    var/db/pkg/pkg-2.9-bin/+COMMENT
    var/db/pkg/pkg-2.9-bin/+CONTENTS
    var/db/pkg/pkg-2.9-bin/+DESC
    var/db/pkg/pax-1.6-bin
    var/db/pkg/pax-1.6-bin/+COMMENT
    var/db/pkg/pax-1.6-bin/+CONTENTS
    var/db/pkg/pax-1.6-bin/+DESC
    var/db/pkg/pax-1.6-bin/+REQUIRED_BY
    var/db/pkg/ftp-3.5j-bin
    var/db/pkg/ftp-3.5j-bin/+COMMENT
    var/db/pkg/ftp-3.5j-bin/+CONTENTS
    var/db/pkg/ftp-3.5j-bin/+DESC
    var/db/pkg/ftp-3.5j-bin/+REQUIRED_BY
    var/db/pkg/ls-1.2.6-bin
    var/db/pkg/ls-1.2.6-bin/+COMMENT
    var/db/pkg/ls-1.2.6-bin/+CONTENTS
    var/db/pkg/ls-1.2.6-bin/+DEINSTALL
    var/db/pkg/ls-1.2.6-bin/+DESC
    var/db/pkg/ls-1.2.6-bin/+REQUIRED_BY
    var/db/pkg/gzip-1.3.3.10.1-bin
    var/db/pkg/gzip-1.3.3.10.1-bin/+COMMENT
    var/db/pkg/gzip-1.3.3.10.1-bin/+CONTENTS
    var/db/pkg/gzip-1.3.3.10.1-bin/+DESC
    var/db/pkg/gzip-1.3.3.10.1-bin/+REQUIRED_BY
    var/db/pkg/env_etc_irsconf-1.0-bin
    var/db/pkg/env_etc_irsconf-1.0-bin/+COMMENT
    var/db/pkg/env_etc_irsconf-1.0-bin/+CONTENTS
    var/db/pkg/env_etc_irsconf-1.0-bin/+DEINSTALL
    var/db/pkg/env_etc_irsconf-1.0-bin/+DESC
    var/db/pkg/env_etc_irsconf-1.0-bin/+REQUIRED_BY
    var/db/pkg/env_path_local-1.0.4-bin
    var/db/pkg/env_path_local-1.0.4-bin/+COMMENT
    var/db/pkg/env_path_local-1.0.4-bin/+CONTENTS
    var/db/pkg/env_path_local-1.0.4-bin/+DEINSTALL
    var/db/pkg/env_path_local-1.0.4-bin/+DESC
    var/db/pkg/env_path_local-1.0.4-bin/+REQUIRED_BY
    var/db/pkg/env_manpath_local-1.0.7-bin
    var/db/pkg/env_manpath_local-1.0.7-bin/+COMMENT
    var/db/pkg/env_manpath_local-1.0.7-bin/+CONTENTS
    var/db/pkg/env_manpath_local-1.0.7-bin/+DEINSTALL
    var/db/pkg/env_manpath_local-1.0.7-bin/+DESC
    var/db/pkg/env_manpath_local-1.0.7-bin/+REQUIRED_BY

ツール類のインストール

bashのインストール

Korn Shell を起動し、下記コマンドを実行。

$ pkg_update -L bash

途中、「pkg_update: Cannot find package ”.: Undefined error: 0」というメッセージが数行表示されるが、最後「Done.」となればインストール完了。

「C:\Documents and Settings\All Users\スタート メニュー\プログラム\Subsystem for UNIX-based Applications」にある「Korn Shell」のショートカットをコピーし、名称を「bash Shell」に変更。
当該ショートカットのプロパティを選択し、リンク先を「C:\WINDOWS\posix.exe /u /c /usr/local/bin/bash -l」に変更。これでスタートメニューからbash シェルを起動できるようになる。

vimのインストール

Korn Shell, またはbash Shell を起動し、下記コマンドを実行。

$ pkg_update -L bash

インストール完了後、「vim」と入力してvimを起動させようとすると、

$ vim
vim: error in loading shared libraries
libncurses.so: cannot open shared object file: No such file or directory

となる。
よって、下記のように環境変数「LD_LIBRARY_PATH」に「/usr/local/lib」を追記し、再起動すると正常にvimが起動するようになる。

OpenSSH のインストール

上で記載したように、Interop Systemで用意されているaddon-tools 付属のOpenSSHでは実行させると下記エラーを表示し、うまく起動しない。

ssh:error in loading shared libraries
/usr/lib/libdl.so.5.2: undefined symbol:__argv

SUAコミュニティのフォーラムに「pkg_update -L openssh でアップデートしろ」、との情報があったが効果なし。結果として、addon-toolsを使用せずに、これまで記載した方法で必要なツール類を1つ1つ導入し、OpenSSHも同様の方法でインストールすると問題なく動作する。

OpenSSHをインストールするには、Korn Shell, または bash Shell から下記コマンドを実行。

$ pkg_update -L openssh
Percent download complete/package:
100% |**************************************************| openssh
pkg_update: Cannot find package ''.
pkg_update: Cannot find package ''.
Generating public/private rsa1 key pair.
Your identification has been saved in /usr/local/etc/ssh_host_key.
Your public key has been saved in /usr/local/etc/ssh_host_key.pub.
The key fingerprint is:
 :
Starting sshd daemon
sshd started
Done.

インストール終了後、念のため再起動し、コマンドプロンプトより「netstat -a」を実行してsshのポートがリッスン状態にあることを確認。
また、リモートクライアントからputty等のSSHクライアントツールを使用し、正しくssh接続できることを確認する。


You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

AddThis Social Bookmark Button

Leave a Reply