ushidayの日記

主に「IBMi」のメモに・・・

IBM iのSSH設定その1

IBM i(以下AS/400)にSSHを設定したのでメモしときます。
SSHは、OpenSSHがデフォでPASE環境に導入されています。
このあたりを参考に設定しました。

  • SSHのバージョンとインストール先
    • OS/400「V5R3 & V5R4」の場合は、OpenSSH-3.5p1が「/QOpenSys/QIBM/ProdData/SC1/OpenSSH/openssh-3.5p1/」にインストールされています。
    • OS/400「V6R1」の場合は、OpenSSH-3.8.1p1が「/QOpenSys/QIBM/ProdData/SC1/OpenSSH/openssh-3.8.1p1/」にインストールされています。

その他に、「/QOpenSys/QIBM/ProdData/SC1」下に”OpenSSL”と”zlib”がPASE用のツールとして提供されているようです。
SSHの設定に関してですが、相変わらず資料が無いというか、解りづらいというか...。:-(

SSHサーバーの設定(V6R1の場合)
  • 原文
For V6R1 the sshd daemon can be started with CL command STRTCPSVR SERVER(*SSHD) and ended with ENDTCPSVR SERVER(*SSHD). If they do not exist, the host key files will be generated when the sshd daemon is started.

という事で、V6R1は「STRTCPSVR」のパラメータに「*SSHD」が、追加されているみたいです。もっと早く気づこうよ...IBMさん。

SSHサーバーの設定(V5R3、V5R4の場合)

悲しいかな、上記の「STRTCPSVR」コマンドは、自分の環境では、残念ながら使えません(つд∩) 。
大した事は無いですが、自分で設定しなければいけない事が、幾つかあります。

  • ホスト鍵の作成
    • 「call qp2term」又は「qsh」でAS/400のシェルを呼び出す。

    • ssh-keygen -t rsa1 -f /QOpenSys/QIBM/UserData/SC1/OpenSSH/openssh-3.5p1/etc/ssh_host_key -N ""」を実行。

    • ssh-keygen -t dsa -f /QOpenSys/QIBM/UserData/SC1/OpenSSH/openssh-3.5p1/etc/ssh_host_dsa_key -N ""」

    • ssh-keygen -t rsa -f /QOpenSys/QIBM/UserData/SC1/OpenSSH/openssh-3.5p1/etc/ssh_host_rsa_key -N ""」


  • SSHデーモンの実行

    • 「ジョブの確認」


SSHクライアントの実行

クライアントは、自分の環境は、Windowsでしたが、cygwinが入っているので、そのままcygiwnのターミナルから確認しました。


AS/400ユーザーの注意

デーモンの起動や、SSHクライアントのAS/400ユーザー名は、8文字以下の必要が有るようです。「The userid that starts the daemon must be 8 or fewer characters long」、「The userid that is connecting must be 8 or fewer characters long」何て事が地味に書かれています。最初は気づかなくSSHクライアントでエラーになって、小ハマリしました。結構重要な事なので、もっと目立つように書いて頂けたらありがたいです。よく読まない自分が悪いのですが...Σ(・A ・;) 。ユーザー、パスワード共に、小文字は大文字として解釈してくれました。

sshdデーモンの終了

OpenSSHによると「sshd stop」でデーモン終了のようですが、AS/400では通用しないようです。他の”start”や”restart”も同様に”余計な引数 xxxx 。”って怒られます。「余計な..」って。

「こちらに」同じ事で悩まれた方がいる様で、参考にさせて頂きました。(最悪”WRKACTJOB”から、強制終了も考えました。)「ps ax」で、プロセスを出力して、sshdのプロセスIDを「kill プロセスID」で終了。


その他、デーモンのプロセスIDをファイルに出力して、CLでQSHからそのプロセスIDをkillするやり方もあったので、また次回以降でコマンドを自作したいと思います。

これで、sshAS/400のシェルを起動できるので、「call qp2term」が、いらなくなりました。
...と思ったら、echoとか簡単なコマンドが、動かなかったりするし。文字化けとか、環境変数の辺りがまだ怪しいです。
続きは、「公開鍵暗号の認証」と「Port Forwarding」を使ってSSH越しに、別の端末にリモート出来る様にしていきたいと思います。