GCEにPuttyから簡単接続する

  • このエントリーをはてなブックマークに追加

ご注意

この記事は 2014年3月25日 に書かれたものです。内容が古い可能性がありますのでご注意ください。

年末ではありますが、先日ちょっとGCE(Google Compute Engine)を触る機会がまたありまして。
いろいろ変わってたのですが、ノーマルSSHでの接続のやり方とかがわかりづらかったので、いろいろ試行錯誤した結果、
Puttyでの接続まで出来たので、共有しておきます。
やはりgcutil経由だと微妙なレスポンスの悪さがどうしても気になりますよね。

前提条件として、GCEが有効なプロジェクトはもうあってインスタンスも立ちあげられてる、という前提です。
もちろん権限も必要ですので、その辺りは適当にググって調べてください。
クレジットカードさえあればとっても簡単です。

最終的に整理した簡単なステップは以下です。

  1. PuttyのKeygenerator でPublicキーとppkファイルを作成する
  2. Publicキーのファイルの中身を修正してGCEのConsoleからメタデータとして登録する
  3. Puttyの設定をしてGCEに直接接続する

この3ステップで少なくとも一度でもgcutilからアクセスしたことのあるマシンにはアクセス出来ます。
ちょっと細かい条件が面白い部分もあるので、そこは後ほど小ネタ参照と言うことで。

1.PuttyのKeygenerator でPublicキーとppkファイルを作成する

PuttyのKey Generatorってのを使って、生成します。
Puttyのインストールフォルダ内にPUTTYGEN.exeというのがあるのでそいつを起動しましょう。
「Generate」(生成)ってのを押してマウスをグリグリすると完成します。
暗号化方式は「SSH2-RSA」(デフォルト)でOKです。
生成したキーをPublicとPrivateで保存です。pathphraseは一応付けといた方がいいでしょう(建前)。
ちなみに、Publicキーは以下のようなものが生成されます。
putty_01
privateキーの方は後でPuttyから読み込むように設定するので、putty配下とかわかりやすいところに、プロジェクト名でも付けて置いておきましょう。

2.Publicキーのファイルの中身を修正してGCEのConsoleからメタデータとして登録する

上記のようなファイルがPublicキーとして生成されるのですが、これを少しテキストを修正して登録します。
登録するのは以下のようなURL(ダミーです)で。「My Project」-「ComputeEngine」-「メタデータ」で行けます。

必ず、「sshKeys」という名前で登録します。
このキーは更新出来ないので追加の場合は毎回全量の修正が必要です。

https://cloud.google.com/console#/project/283210141126/compute/metadata

で、肝心の設定内容ですが。ここが一番のキモです。上記のPublicKeyファイルが出来て場合。3行目から6行目までの部分だけが大事です。
で、
ユーザ名:ssh-rsa XXXXXX
という形でXXXの部分はPublic Keyファイルの3行目から6行目を改行無く繋げます。修正したファイルは以下です。
ユーザ名はもちろん、接続先のGCEのOSユーザ名です。通常はメアドの頭の部分になるかと思いますが、gmailユーザの場合どうなるのか不明です。まぁ、gcutilで接続して、idコマンドなりなんなりで調べてください。
putty_02
で、これをそのまま以下のようにぶち込んでやればOKです。
putty_03
これで、クラウド側の設定はOK。
この人(ayatoshi)は今後このプロジェクト内で立ちあげるどのサーバにもayatoshiユーザでログイン出来るようになります。

3.Puttyで接続

Puttyで設定が必要な項目は以下。

  • 「Connection」-「Data」の「Login details」のAuto-logine UserNameに名前(サーバ側のログインユーザ名、ここではayatoshi)を入れます。
  • 「Connection」-「SSH」-「Auth」の右側の一番下のPrivateKeyファイル指定するボックスに1で生成したppkファイルを指定
  • IPアドレスにGCEの外部IPを指定する
  • その他は好きにしてOK

以上です。これでハッピーGCE with Puttyライフを楽しんでください。

その他GCEユーザ設定関連小ネタ

複数人の設定がしたい

上記のsshKeysを登録するときに改行して他のユーザ分も設定してください。
ユーザ名A:ssh-rsa XXXXXX
ユーザ名B:ssh-rsa XXXXXX
となってればOKです。ちなみに、XXXの部分は同じファイルを配布すればぶっちゃけ同じでもイケます。ただし、誰にでもなり済ませてしまうので、余り推奨出来ませんが。。。

個別のサーバ毎に設定したい

各ユーザのhomeの ~/.ssh/authorized_keys ファイルに上記でsshKeysとして指定したものの、「ユーザ名:」を削ったもの、すなわち
ssh-rsa XXXXXX
という行を追加してあげれば、OK。これはサーバ毎に設定の必要あり。

GCEのOSユーザ名ってGoogleのIDじゃないとダメなの?

大丈夫です。gcutilはGoogleのIDが必須になります(と、思う。検証はしてない。)が、SSHの場合はユーザさえ作成してしまえば、上記の設定をGoogle関係無いユーザを作成して配布することで、利用可能です。
適当な名前でuseraddしてやれば、問題ない筈です。

GCEのOSユーザっていつ生成されるの?

ちょっと正確には不明ですが、確認した挙動としては、複数台サーバがあった時に、gcutilでどこかのサーバにログインすると全部のサーバにユーザが作成されると言う動きをします。
ですので、新規にサーバを生成した場合は全員が一度gcutilでどっかにログインすれば、上記の設定さえしておけば、全員が使えるようになります。
別途自分たちで自前で用意するユーザについては、作成済のスナップショットからコピーする、という運用になるのでしょう。

以上、お役に立てれば幸いです。

  • このエントリーをはてなブックマークに追加

Google のクラウドサービスについてもっと詳しく知りたい、直接話が聞いてみたいという方のために、クラウドエースでは無料相談会を実施しております。お申し込みは下記ボタンより承っておりますので、この機会にぜひ弊社をご利用いただければと思います。

無料相談会のお申込みはこちら