こんにちは。SCSK石原です。
外部IPを持たないGCEのLinuxインスタンスに接続する方法をまとめました。
開発環境や検証環境の場合、Linuxサーバにログインして操作する機会が多いのではないでしょうか。そんなときの備忘録としてご活用いただけると幸いです。
今回は、下記のOS環境で検証しております。
接続先サーバ | RHEL 9 |
接続元PC | Windows 10 |
GCE Linuxインスタンスへの接続方法
接続にはいくつかの手段があります。今回説明する方法は下記の5つです。
- Google Cloud コンソールからブラウザ経由でSSH接続
- Google Cloud コンソールからCloudShellを起動してgcloudコマンド経由でSSH接続
- 作業PCのCloudSDK(gcloudコマンド)経由でSSH接続
- 作業PCのCloudSDKを利用してローカルにポート転送してサードパーティーツールで接続
- 踏み台サーバを作成してサードパーティーツールでSSH接続
接続イメージ図を下記に示します。
Google Cloud コンソールからブラウザ経由でSSH接続
Google Cloudコンソールから「Compute Engine」のページを開きます。
VMインスタンスの右側にある「SSH」のボタンを押すことで、GUI上からLinuxインスタンスへの接続が可能です。
Google Cloud コンソールからCloudShellを起動してgcloudコマンド経由でSSH接続
Google Cloudコンソールから「CloudShell」を起動します。
下記のコマンドを実行して、インスタンスに接続できます。
gcloud compute ssh --zone "[ゾーン名]" "[インスタンス名]" --tunnel-through-iap --project "[プロジェクト名]"
作業PCのCloudSDK(gcloudコマンド)経由でSSH接続
公式サイトからCloudSDKをダウンロードします。
クイックスタート: Google Cloud CLI をインストールする | Cloud SDK のドキュメント
なお、社内環境の制約(プロキシの制約)などでインストールできない場合は、アーカイブからインストールが可能です。
バージョニングされたアーカイブからのインストール | Cloud SDK のドキュメント | Google Cloud
インストール後は下記のコマンドを実行して初期化の処理をします。
gcloud init
③と同様のコマンドで作業PCから接続できます。
gcloud compute ssh --zone "[ゾーン名]" "[インスタンス名]" --tunnel-through-iap --project "[プロジェクト名]"
作業PCのCloudSDKを利用してローカルにポート転送してサードパーティーツールで接続
既存利用しているSSH接続用のツールを変更したくない場合に活用することができます。Teratermなど、作業ログが取りやすいため使いたいなどの声をよく聞きます。そのような場合に有効な手段だと考えます。
この方法の場合、コンソールからログインする場合と異なり、接続用ユーザの作成&鍵作成が必要になります。
【初回のみ】ユーザ作成
OS上に接続用のユーザを作成します。OS上での作業になりますので、別の手段で接続できる必要があります
また、ユーザの作成は要件にあったものを作成ください。
sudo groupadd -g 1100 devuser sudo useradd -u 1100 -g 1100 devuser sudo passwd devuser
【初回のみ】鍵作成
作成した接続用ユーザのキーペアを作成します。
su - devuser mkdir -m 700 .ssh cd .ssh/ ssh-keygen -t rsa mv id_rsa.pub authorized_keys chmod 600 authorized_keys
ここで作成された「id_rsa」ファイルは接続時に利用しますので、作業PCにダウンロードしておいてください
接続手順
作業PCにインストールされているCloudSDKを起動して、下記のコマンドを実行します。
gcloud compute start-iap-tunnel [インスタンス名] 22 --local-host-port=localhost:[ローカルポート]--zone=[ゾーン名]
このコマンドを実行することで、作業PCの指定したポート(例:10022)にGCEの22番ポートが転送されます。
あとは使い慣れたツール(Teratermなど)を利用して、先ほどダウンロードした秘密鍵「id_rsa」ファイルを利用して接続が可能です。
踏み台サーバを作成してサードパーティーツールでSSH接続
Google Cloudに関わらず、以前からよく利用される手段かと思いますので、こちらで詳細な手順の説明は割愛します。
パブリックIPを保持したインスタンスを作成し、適切なFW設定やルーティング設定を実施することで、作業環境から直接接続できる踏み台サーバが作成できます。
踏み台サーバから、同一NW上に存在するサーバにSSH接続をすることで接続が可能です。
注意点
- Google Cloudの機能を利用して接続する手順においては、IAMなどで適切な権限の付与が必要になりますことをご理解ください。
- IAPの機能を利用してGCEにSSH接続する場合は、FWにて「35.235.240.0/20」の22番ポートを許可する必要があります。
- Google Cloudがオススメする方法の紹介
おわりに
今回はGCEのLinuxインスタンスに接続する5つの方法を紹介しました。
あくまで手段になりますので、要件にあった利用をおすすめします。また、本番運用されるインスタンスについては、接続元を制限することが必要になるかと思います。
お役に立てれば幸いです。