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

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

タグ:ssh

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

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 番ポートで稼働します。










 

CentOS 6 で KVM 環境を構築し、自宅で「ドメスティッククラウド」とでも表現するような環境を使っています。

当然、仮想サーバーも自由に作ったり壊したり・・・なんですが、最近になって「CentOS 6 への SSH 接続にやけに時間がかかる」のが気になってました。

症状としては、「SSH で接続しに行くと、パスワードを聞かれるプロンプトが表示されるまでにやけに時間がかかる」というものです。パスワード入力画面がなかなか出ないので先に進めず、体感的に1~2分程度してから表示されて、そこでようやくログインできる、というものです。
2015010600


実際には結構待つことになり、かといってパスワードプロンプトが表示されるまで放っておこうとすると、今度は表示されたことに気付かずに更にしばらく時間が経過してしまい、パスワードを入力してもタイムアウトでログインできない、なんてことも起こってしまいます。


これ、原因は1つではないのですが、自分の場合はどこかのタイミングで SSH の GSSAPI 認証が有効になってしまっていて、それが原因で余計な処理がサーバー側で動いてしまい、 パスワードプロンプトが表示されるまでに時間がかかっていたようでした。

これを回避するにはそのサーバーに root 権限でアクセスして、/etc/ssh/sshd_config ファイルを開いて、GSSAPIAuthentication を off に設定し、最後に sshd を再起動します。これで解決:
# vi /etc/ssh/sshd_config

  :
  :
GSSAPIAuthentication no (yesになっていたらnoに変更して保存する)
  :
  :

# /etc/init.d/sshd restart



このページのトップヘ