*

GCEにPuttyから簡単接続する

公開日: : 最終更新日:2015/11/04 投稿者: GAE, GCE, GCP

年末ではありますが、先日ちょっと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でどっかにログインすれば、上記の設定さえしておけば、全員が使えるようになります。
別途自分たちで自前で用意するユーザについては、作成済のスナップショットからコピーする、という運用になるのでしょう。

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

この記事を書いた人

ayatoshi
ayatoshi
徳島県出身、吉積情報株式会社最高技術責任者
愛光高校、東京大学卒業後、アクセンチュアにて5年間システム開発を経験。
CP300のアジア初取得者。
Google基盤上でのシステム開発の普及を目標として日々活動中。

関連記事

たった1つのCloud SQLインスタンスで複数のWordPressを動かす

皆様こんにちは。 前回はCloudSQLやCloud Storageを用いてWordpress

記事を読む

【Disk I/O比較】Google Compute Engine vs Amazon EC2

みなさんこんにちわ。 世間でIaaSといえば、もっぱらAmazon AWS EC2とういうような状

記事を読む

2016/12/27 GCE vs AWS vs Azure ベンチマーク

2016/12/27 GCE vs EC2 vs Azureベンチマーク 本シリー

記事を読む

GCEの超絶性能!100秒で1000コア起動!

ちょっとふとしたことがあり、GCEで1000コア立ち上げるのにどのくらい時間がかかるだろうと思って、

記事を読む

GCEのネットワーク性能調査(iperf3でゾーン間やEC2と比較もしてみる)

GCEとEC2の同一ゾーン間と同一リージョン別ゾーン間でのネットワーク性能(ping遅延、iperf

記事を読む

2016/11/07 GCE vs AWS vs Azure ベンチマーク

2016/11/07 GCE vs EC2 vs Azureベンチマーク 本シリー

記事を読む

Google App Engine Modules in Javaを試す WebToolsPlatform編

みなさんこんにちは。 2013年の7月に、Google App Engine1.8.2がリリー

記事を読む

1つのエンティティにプロパティをいくつまで作れるか(パート2)

1つのエンティティにプロパティをいくつまで作れるか 1つのエンティティにプロパティをいくつまで

記事を読む

App Engine for PHP ベータ版から正式版へ

GCPBlogの記事によると App Engine for PHP(PHPアプリをGoogle Ap

記事を読む

『Google Cloud Platform セッション- 最新技術と日本での展開について』速報メモ

本日、『Google Cloud Platform セッション- 最新技術と日本での展開について』と

記事を読む

PAGE TOP ↑