no image

GCPのVMインスタンスへターミナルソフトから直接SSHする

1. はじめに

はしへいですGCPのVMインスタンスにWebコンソールから接続すると、ローカルPCのターミナルソフトへコマンドを投入した際に比べ、反応が遅く感じることがあります。
GoogleCloudコマンドラインツールを用いる事で、この反応速度の改善や、teratermのログ機能などのターミナルソフトの便利機能を利用する事ができます。

インターネットからVMインスタンスに直接SSHする場合には、セキュリティの観点から、SSHの利用ポートを予めデフォルトから変更する方が良いです。

ターミナルソフトからGCPのVMインスタンスヘSSHログインする方法には、大まかに以下の3パターンがあります。

手法 管理性 説明
IAMの役割を利用する VMインスタンス毎にユーザと権限を細かく制御可能。
GCPとしての機能であり、GCPのユーザ管理とSSH鍵の管理がツールでできる。
プロジェクト/インスタンス毎に
メタデータでSSH鍵を管理します。
メタデータ内にユーザと権限を埋め込む。アクセス権を取り消す場合には、
メタデータから対象のSSH認証鍵を削除するなど、SSH認証鍵を手動で管理する必要があります。
SSH鍵を手動で管理する × SSH鍵の登録/削除はVMインスタンス舞に手動で構成する必要がある。
ログインアクセス権を取り消す場合には、VMインスタンス毎にSSH認証鍵情報から削除が必要となります。

今回はクラウド上で複数サーバを管理する可能性がある事、ユーザの追加変更削除の際の情報削除作業漏れの影響が少ない、IAMの役割を利用してみます。IAMについての詳しい情報は、IAMのページに詳しい情報があります。

2. gcloud computeコマンドの設定

Cloud SDKのインストールについては、ここを参考に実施しておきます。

Mac(OSX High Sierra)では以下の手順で設定します。Windowsや他OSの場合はターミナルソフト(Windows Power Shellなど)の操作方法に従い実施します。
手元PCのターミナルソフトから、gcloud computeコマンドを実施する。

 $ gcloud compute --project "My Project Name" ssh --zone "us-east1-b" "[email protected]" --ssh-flag="-p 10022"

gcloud computeコマンドの引数は以下の通り。

オプション 上記の値 説明
–project My Project Name ログインしたいVMインスタンスが所属するプロジェクト名を指定します
–zone us-east1-b ログインしたいVMインスタンスが所属するゾーンを指定します
[無し] [email protected] ログインしたいVMインスタンス名及びログインに利用したいユーザ名を指定します
–ssh-flag -p 10022 ログインしたいVMインスタンスでSSHサーバが稼働するポート番号

初回接続の際にはgcloud compute コマンドでログインする際に求められるパスフレーズの設定を促されるため設定します。(以下では*****)

Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): *********
Enter same passphrase again: *********

2度目以降のログインの際には、上で設定したパスフレーズの入力が求められます。入力に問題が無ければログインできます。

$ gcloud compute --project "My Project Name" ssh --zone "us-east1-b" "[email protected]" --ssh-flag="-p 10022"
Enter passphrase for key '/Users/hashihei/.ssh/google_compute_engine': *********
  .......
[[email protected]]$

毎回上記コマンドを投入しログインするのは大変なため、エイリアスを登録しておくと便利です。

cd
vi .bash_profile

以下の行を追加します。

alias ssh-gcp-vm-001='gcloud compute --project "My Project Name" ssh --zone "us-east1-b" "[email protected]" --ssh-flag="-p 10022"'

gcloud computeコマンドのssh接続に関するオプションの説明は、ここにあります。