LoginSignup
19
20

More than 3 years have passed since last update.

GCEにSSHで接続する

Last updated at Posted at 2019-08-30

GCPで作成したGCEにSSHで接続する方法を記載します。

SSHで接続する対象のGCEはGCEとは ~GCP無料枠を利用して学習~で作成したものになります。
※ディスクイメージにCentOS 7を使用しているため、別途必要な作業が発生します。

また、SSHはデフォルトでTCP22番ポートが利用されますが、これが攻撃の対象となってしまいますので、利用するポート番号の変更も併せて実施します。

Cloud Shell

Cloud ShellとはGoogleが提供するGCP専用のWebコンソールの中で利用できるツールのことです。
ブラウザ上のコマンド端末からGCPのプロジェクトやリソースの管理や操作が可能です。

Cloud Shellの起動

コンソール画面からCloud Shellを開きます。
コンソール画面の右上のアイコンをクリックすると、画面下部にターミナルが表示されます。

ホーム – trial – Google Cloud Platform - Google Chrome 2019_08_30 23_05_05.jpg

コンソール画面から「Copmpute Engine」>「VMインスタンス」をクリックします。
接続したいGCEの「SSH」の横にある「▼」をクリックし、「gcloudコマンドを表示」をクリックします。

Compute Engine - trial - Google Cloud Platform - Google Chrome 2019_08_29 22_24_33_2.jpg

表示されたgloudコマンドを先程のCloud Shellで実行します。
または「gcloudコマンドを表示」をクリックした後の画面より「CLOUD SHELLで実行する」をクリックすると接続できます。

Compute Engine - trial - Google Cloud Platform - Google Chrome 2019_08_29 22_57_08.jpg

なお、後述するSSHのポート設定の変更を実施した場合は、gloudコマンドに以下オプションを追加します。

--ssh-flag="-p ポート番号"

ブラウザウィンドウ

ウェブブラウザの拡張機能や追加のソフトウェアをインストールなしで利用できます。

ブラウザからのSSH

コンソール画面から「Copmpute Engine」>「VMインスタンス」をクリックします。
接続したいGCEの「SSH」横にある「▼」をクリックし、「ブラウザウィンドウで開く」をクリックします。

Compute Engine - trial - Google Cloud Platform - Google Chrome 2019_08_29 22_24_33_2.jpg

SSHのポート設定を変更した場合は「ブラウザウィンドウでカスタムポートを開く」をクリックし、設定したポートを入力して「開く」をクリックします。

Compute Engine - trial - Google Cloud Platform - Google Chrome 2019_08_29 22_45_42.jpg

ローカル環境からSSH

ローカルのPCからターミナルを使用して接続します。
SSH接続の設定を実行するにあたって、以下を条件としています。

 ・SSHのポートをデフォルト以外に設定
 ・公開鍵/秘密鍵による認証

実際の設定作業は以下の通りになります。

 1.公開鍵をGCEにアップロード
 2.変更予定のSSHポートに対するファイアウォールの通信許可設定追加
 ※firewalldとSELINUXを無効化(CentOS利用時)
 3.GCEのSSHポート設定変更

1.公開鍵をGCEにアップロード

SSH接続を実現するための秘密鍵/公開鍵を作成します。
下記コマンドを実行して作成される"id_rsa"が秘密鍵、"id_rsa.pub"が公開鍵の鍵ファイルです。

$ mkdir ~/.ssh
$ cd ~/.ssh
$ ssh-keygen -t rsa -C "ユーザー名"
$ ls ~/.ssh/
config  id_rsa  id_rsa.pub  known_hosts

GCPのコンソール画面から「Copmpute Engine」>「メタデータ」をクリックします。
「SSH認証鍵」をクリックすると現在GCPに登録されている認証鍵の一覧が表示されます。
「+項目を追加」をクリックし、先程作成した公開鍵の内容をテキストボックスにコピーして「保存」をクリックします。

Compute Engine - trial - Google Cloud Platform - Google Chrome 2019_08_29 23_55_01.jpg

上述のCloud ShellまたはブラウザウィンドウからGCEに接続し、ユーザーディレクトリ配下に"authorized_keys"の鍵ファイルが作成されていることを確認します。
また、ユーザーディレクトリと各鍵ファイルの権限がそれぞれ700、600であることも確認します。
想定と異なった権限であれば変更します。

$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/鍵ファイル

ローカルのターミナルからSSHで接続します。

ssh ユーザー名@インスタンス外部IPアドレス -i 秘密鍵のパス

2.変更予定のSSHポートに対するファイアウォールの通信許可設定追加

GCPのコンソール画面から「VPCネットワーク」>「ファイアウォールルール」をクリックします、「ファイアウォールルールを作成」をクリックします。

必要事項を入力していき、「ターゲットタグ」を入力します。
ここで設定したターゲットタグをGCEに設定することで、ファイアウォールルールが適用されます。
「プロトコルとポート」で変更するポート番号を入力します。
1~1024のウェルノウンポート以外を入力してください。
また、予測されやすい2222などは避けたほうが良いようです。
「作成」をクリックして新しくファイアウォールルールが作成されたこと確認します。

VPC ネットワーク - trial - Google Cloud Platform - Google Chrome 2019_08_28 23_32_00.jpg

コンソール画面から「Copmpute Engine」>「VMインスタンス」をクリックします。
SSH接続する対象のGCEをクリックし、「編集」をクリックします。
「ネットワークタグ」に先程のファイアウォールルール作成時に指定したタグを追加します。
「保存」をクリックします。

VPC ネットワーク - trial - Google Cloud Platform - Google Chrome 2019_08_28 23_32_00.jpg

※firewalldとSELINUXを無効化

今回、SSH接続の設定を行うGCEはCentOS7を使用しています。
そのため、firewalldとSELINUXを無効化する必要があります。
この設定を行わないとポート変更後にsshdの起動に失敗します。

$ systemctl restart sshd.service

Job for sshd.service failed because the control process exited with error code. See "systemctl status sshd.service"
 and "journalctl -xe" for details.

firewalld無効化

#firewalldの無効化
$ systemctl disable firewalld

#firewalldの状態確認
$ systemcctl status firewalld
● firewalld.service - firewalld - dynami firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled★; vendor preset: enabled)

SELINUX無効化

#SELINUXの状態確認(有効)
$ getenforce
Enforcing

#SELINUXの設定ファイルを編集
$ sudo vi /etc/selinux/config

SELINUX=disabled

#GCEを再起動(コンソール画面の■(停止)、▶(開始)ボタンでも可)
$ shutdown -r now

#SELINUXの状態確認(無効)
$ getenforce
Disabled

3.GCEのSSHポート設定変更

上述のCloud ShellまたはブラウザウィンドウからGCEに接続します。
viで設定ファイルを編集し、ポート番号を任意の番号に設定します。

#SSHの設定ファイルを編集
$ vi /etc/ssh/sshd_config

Port ポート番号

#sshdの再起動
$ systemctl restart sshd.service
$ systemctl status sshd.service

ローカルのターミナルからオプションで変更したポート番号を指定し、SSHで接続します。

ssh ユーザー名@インスタンス外部IPアドレス -i 秘密鍵のパス --ssh-flag="p=ポート番号"

以上で、作業完了です。

19
20
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
20