Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

仕事でGCEを使うことになったのですが,GCEに接続するためにgcloudコマンドを使用しなければいけません.
しかし,gcloudコマンドではなく,sshコマンドを使用して接続したかったので,
ついでに$ ssh gceのような短いコマンドで接続できるようにしました.

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

CloudSDKのインストール

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

インスタンスを作成

ScreenShot 2.png

「名前」は,適当に入力してください.
「ゾーン」は,東京リージョンが"asia-northeast1"なので,それの"a"を選択.
「マシンタイプ」は,インスタンスを一時停止にすれば後からでも編集可能なので,とりあえずそのままに.
「ブートディスク」は,適当に選択してください.
「ファイアウォール」などは,Webサーバーとして起動するのなら,「HTTPトラフィックを許可する」と「HTTPSトラフィックを許可する」にチェックマークを入れましょう.
それぞれ入力し終えたら,「作成」をクリック.
すると,しばらく待つと,インスタンスが作成されます.

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

ssh接続する前に,gcloudコマンドで接続しないとssh認証鍵が生成されないので,先にgcloudコマンドで接続します.(逆に言うと,gcloudコマンドで一度接続するだけで自動生成されるので楽.)
:warning: 既にgcloudコマンドで接続したことがあり,その際にssh認証鍵を生成した場合はこのステップを飛ばしてください.

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

ScreenShot 3.png
出てきたプルダウンメニューから,「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することができます.

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした