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" "username@vm-001" --ssh-flag="-p 10022"
gcloud computeコマンドの引数は以下の通り。
オプション | 上記の値 | 説明 |
---|---|---|
–project | My Project Name | ログインしたいVMインスタンスが所属するプロジェクト名を指定します |
–zone | us-east1-b | ログインしたいVMインスタンスが所属するゾーンを指定します |
[無し] | username@vm-001 | ログインしたい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" "username@vm-001" --ssh-flag="-p 10022" Enter passphrase for key '/Users/hashihei/.ssh/google_compute_engine': ********* ....... [user@vm-001]$
毎回上記コマンドを投入しログインするのは大変なため、エイリアスを登録しておくと便利です。
cd vi .bash_profile
以下の行を追加します。
alias ssh-gcp-vm-001='gcloud compute --project "My Project Name" ssh --zone "us-east1-b" "username@vm-001" --ssh-flag="-p 10022"'