Edited at

GCEのインスタンス作成からssh接続まで

More than 1 year has passed since last update.

仕事でGCEを使うことになったのですが,GCEに接続するためにgcloudコマンドを使用しなければいけません.

しかし,gcloudコマンドではなく,sshコマンドを使用して接続したかったので,

ついでに$ ssh gceのような短いコマンドで接続できるようにしました.

:warning: MacOSX環境を前提としています.


CloudSDKのインストール

公式サイトの手順に従ってインストールしてください.


インスタンスを作成

「名前」は,適当に入力してください.

「ゾーン」は,東京リージョンが"asia-northeast1"なので,それの"a"を選択.

「マシンタイプ」は,インスタンスを一時停止にすれば後からでも編集可能なので,とりあえずそのままに.

「ブートディスク」は,適当に選択してください.

「ファイアウォール」などは,Webサーバーとして起動するのなら,「HTTPトラフィックを許可する」と「HTTPSトラフィックを許可する」にチェックマークを入れましょう.

それぞれ入力し終えたら,「作成」をクリック.

すると,しばらく待つと,インスタンスが作成されます.


gcloudコマンドを使用して接続

ssh接続する前に,gcloudコマンドで接続しないとssh認証鍵が生成されないので,先にgcloudコマンドで接続します.(逆に言うと,gcloudコマンドで一度接続するだけで自動生成されるので楽.)

:warning: 既にgcloudコマンドで接続したことがあり,その際にssh認証鍵を生成した場合はこのステップを飛ばしてください.



VMインスタンス一覧画面で,先ほど作成したインスタンスの,SSHの右にある逆三角▼をクリック.



出てきたプルダウンメニューから,「gcloudコマンドを表示」をクリック.

すると,コマンドが出てくるので,それをそのままコピーしてTerminalなどで実行.


Terminal.app

$ gcloud compute --project "your-project" ssh --zone "asia-northeast1-a" "instance-1"


実行すると,Enter passphrase (empty for no passphrase):

と,ssh認証鍵用のパスワードの入力を求められるので,任意のパスワードを入力(接続する度に毎回聞かれます).入力が完了されると,ssh認証鍵が生成されます.

しばらく待った後,先ほど入力したパスワードが聞かれるので入力すると,Loginが完了します.

次は,sshコマンドでLoginするため一旦exitします.


Terminal.app

usr@instance-1:~$ exit

logout
Connection to 00.000.000.00 closed.

すると,IPアドレスが表示されるので,後で使用するのでメモしておきましょう.

次は,sshコマンドで接続できるようにします.


sshコマンドを使用して接続

.sshディレクトリに移動し,lコマンドで表示すると,以下の3つのファイルが生成されていることが分かります.


Terminal.app

$ cd ~/.ssh/

$ l
google_compute_engine
google_compute_engine.pub
google_compute_known_hosts

このうちの,"google_compute_engine"ファイルにパスを通すとLoginすることができます.

なので,configというファイルを作成します.その中に,以下のように記述します.


config

## GCE

Host gce
HostName 00.000.000.00
User usr
IdentityFile ~/.ssh/google_compute_engine

3行目以降は,Spaceではなくtabを使用してください.

[HostName]は,gcloudコマンドでLoginしたときにメモしておいたIPアドレスを入力してください.

[User]は,Terminal.appなどで$ echo $USERを実行して出力されたUser名を入力してください.

これで,$ ssh -i ~/.ssh/google_compute_engine [User]@[HostName]という長いコマンドを打たなくても,$ ssh [Host]とするだけで,Loginできるようになります.

今回の場合だと,


Terminal.app

$ ssh gce

usr@instance-1:~$

という感じでLoginすることができます.