まだプログラマーですが何か?

プログラマーネタとアスリートネタ中心。たまに作成したウェブサービス関連の話も http://twitter.com/dotnsf

タグ:ssh

先日、Bluemix 上で使えるようになった WebSphere Application Server (以下 WAS for Bluemix)についてこちらで紹介しました:

上記記事では OpenVPN を使って WAS for Bluemix のサーバー 仮想マシンと VPN 接続をして、WAS のウェブコンソールにアクセスする、という手順を紹介しました:

 

WAS for Bluemix 環境では、上記のウェブコンソールにアクセスするだけでなく、サーバー仮想マシンに ssh 経由でログインしたり、そこから root になって管理者権限で OS を利用することも可能です。今日はそちらの手順を紹介します。

まずは準備として WAS for Bluemix の仮想マシンに対して OpenVPN を使った VPN 接続までは済ませておいてください。具体的な手順は上記リンク先を参照してください。

次に Bluemix 内に定義した WAS for Bluemix のサービスを開いて、VPN 構成ファイルをダウンロードしたこのページを開き、仮想マシンの左横にある下向きの矢印部分(数の赤枠部分)をクリックします:
2016021201


すると隠れていた部分が展開されて、この仮想マシンに SSH 接続するために必要な情報が表示されます:
2016021202


WAS for Bluemix の仮想マシンに SSH 接続するには RSA の秘密鍵が必要です。「鍵の保存」でダウンロードするか、または「鍵を表示」で確認した内容と同じテキストファイルを SSH を実行するクライアント機上にファイルとして用意します(用意したファイルのパーミッションを 600 などにして、他人がアクセスできないようにしておきます):
2016021203


これで SSH 接続のための準備が整いました。以下のコマンドで SSH 接続します(WAS 仮想マシンへの SSH 接続時のユーザーは virtuser を指定します):
$ ssh virtuser@(WAS for Bluemix の仮想マシンのIPアドレス) -i (保存した鍵ファイルのファイルパス)

自分が確認した限りですが、正しい鍵ファイルが指定されていればパスワードなしでログインできます。ユーザー名は上記で指定した virtuser になっていますが、sudo 権限があるようなので、ログイン後に root に切り替えて操作することも可能です:
2016021204


root でログインできる SSH サーバーが提供された、ともいえます。ディレクトリ構成とかを見る限り、ベースはどうも RedHat Enterprise Linux っぽいようにも見えますが、まあその辺りに興味ある方はいろいろ調べてみてください。


ペネトレーションテスト向けにカスタマイズされた Linux ディストリビューションである『Kali Linux』。いろいろアレな機能が標準搭載されていることに加え、見た目もカッコいいし、LibreOffice とかも入れれば普段使いのデスクトップ環境としても使える、という印象を持っています:


なお Kali Linux の導入手順および日本語化他については以前に作成した以下のエントリを参照してください:
Kali Linux を使ってみる


デスクトップ環境が目の前に使える状態になっていると便利なのですが、ペネトレーションテスト用のこだわりなのか、一般的な Linux ではデフォルト状態で使えるサービスの多くが使えません。例えば sshd も無効なので SSH によるリモートログインなども無効になっています。

これはこれでちょっと不便に感じることもあるので、Kali Linux で sshd を有効にする方法を紹介します。手順は簡単で、root でログインして以下のコマンドを実行します:
# update-rc.d ssh enable

で Kali Linux を再起動すると sshd が有効になっており(というか、自動で起動するようになり)、SSH によるリモートログインもできるようになります。


 

IBM がビジネスパートナー企業様向けに無料で Power アーキテクチャのサーバーの試用を提供しています。1回につき2週間程度なので、長期利用を前提とする使い方はできませんが、アプリケーションの Power 上(RedHat Enterprise Linux や Ubuntu の Power 版、AIX, i/OS など)の動作確認や互換性チェックなどを行うには充分だと思っています。利用前に企業登録などの手続きの必要はありますが、料金が発生することはありません。 この PDP(Power Development Platform) と呼ばれるサービスの利用方法については過去にこのブログでも何度かとりあげています。RHEL での紹介ですが、興味ある方はこちらも参照ください:
Power 版 RHEL(RedHat Enterprise Linux) を無料で2週間借りる

実はこの PDP 上の RHEL 環境を使っていて、少し気になることがありました。サーバーリソースがアクティブになり、VPN も張り、いざ SSH でリモートログイン! ・・・しようとすると、結論としてログインできるのですが、SSH コマンドを実行してからパスワードを聞かれるまでに、やけに時間がかかるのです:
2015061001

結論としてはログインできるんだけど、SSH を実行してからパスワードプロンプトが表示されるまでに1分くらいかかってしまいます。それまではパスワードを入力したくてもできない。 で、待ってる間に別の作業でも・・・と思ってメールとか見ていると、いつの間にか夢中になって5分くらい過ぎて、パスワード入力もタイムアウトになってログインに失敗しているという(苦笑)。

RHEL 以外の環境で同様のことが発生するかは試していないのですが、どうやらこれは sshd の認証設定によるものなので設定を変えれば回避できそうです。具体的にはこちらで紹介している対処方法でいけます:

↑こちらで紹介している手法にしたがって、最後に sshd をリスタートしておけば、それ以降の SSH アクセスではすぐにパスワードを聞いてくるようになりました。 PDP 上の RHEL を使っていて気になる方は参考にしてください。



何度か使うことになりそうなので、自分用メモを兼ねて。

IaaS のクラウド環境で仮想マシンを作成する際に、SSH でアクセスする際の鍵を指定することが多くあります。新規に作成する手順を用意してくれるところもあれば、「自分で用意しろ」と言われることもあります。後者しか用意されていないケースは滅多にないと思いますが、新規に作るとなったらなったでその独自手順を理解する必要があったりして面倒です。この SSH の鍵の用意はある意味、クラウドを使う上での最初の壁のような気がしています。

というわけで、この SSH 用の鍵を自分で用意する時の手順を紹介します。自分は作業端末で Linux を使うことが多いので Linux での手順を紹介します。Windows の場合は一般的には PuTTy(PuTTygen) を使って作ることになると思いますが、自分があまり詳しくないのでこの辺りが参考になると思います:
http://sourceforge.jp/projects/winscp/wiki/ui_puttygen

Linux の場合はコンソールにログインし、ssh-keygen コマンドを実行します:
$ ssh-keygen -t rsa -f my_key
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):(パスフレーズを入力)
Enter same passphrase again:(同じパスフレーズを入力)
Your identification has been saved in my_key.
Your public key has been saved in my_key.pub.
The key fingerprint is:
   :
   :
$ 

上記例の場合、-t オプションで RSA 暗号鍵を指定し、-f オプションで出力ファイルを指定しています。この例であればカレントディレクトリに my_key と my_key.pub という2つのファイルが生成されます。前者が秘密鍵で自分で安全に保管しておく必要があります(ログイン時に使います)。後者は公開鍵で、このテキストファイルの中身を VM 作成時に指定することになります。

この方法で一度鍵ペアを作っておくと色々捗ります。


最近のクラウド環境では、初期状態で SSH(22) のみファイアウォールを通す設定になっているケースが一般的です。HTTP(80) を通したい場合は別途設定が必要ですが、SSH だけは無条件に使える設定になっている、という意味です。まあ HTTP サーバーを導入するにしても SSH が使えると便利ですよね。

この SSH サーバーの動作ポート番号を 22 番から別の番号へ変更したい場合の設定は /etc/ssh/sshd_config を変更します:
#Port=22
となっている箇所のコメントを外して、例えば
Port=10022
のように変更します。これで再起動すると SSH(SFTP) は 10022 番ポートで稼働します。










 

このページのトップヘ