# GCP:ローカルマシンからVMインスタンスへのSSH接続

**URL:** https://forum.ficusonline.com/t/topic/305
**Category:** Server
**Created:** [2019 年 5 月 31 日午前 10:28 UTC](https://forum.ficusonline.com/t/topic/305 "2019-05-31T10:28:52Z")
**Posts on this page:** 2
**Page:** 1

<div class="post-metadata">

### Author: ![tk-fuse](https://forum.ficusonline.com/user_avatar/forum.ficusonline.com/tk-fuse/32/255_2.png) [@tk-fuse](https://forum.ficusonline.com/u/tk-fuse)
#### Post date: [2019 年 5 月 31 日午前 10:28 UTC](https://forum.ficusonline.com/t/topic/305/1 "2019-05-31T10:28:52Z")

</div>

GCPで作成したVMインスタンスへの接続は、  
ブラウザのGCP管理画面—\>VMインスタンスの項目—\>SSH接続を選択  
ブラウザによるターミナル画面が表示され、SSHによる接続が行われます。

 ![Screenshot%20from%202019-05-31%2018-07-45](https://forum.ficusonline.com/uploads/default/original/1X/a515f27163f7a866b91c0f08930b142740bb354c.png)

**外部PC(Linux端末)のターミナル経由でSSH接続する場合には、下記準備が必要となります。**

**SSH認証キーの作成**

外部端末でVMインスタンスの管理ユーザ（gmailアドレスユーザ： **your\_user\_name** ）を指定して認証キーを作成します。認証キーのファイル名 **gcp-instance** は任意です。初回SSH接続時に必要となるプライベートキーへのパスワード入力が求められますが、これも任意です。

> $ ssh-keygen -t rsa -f ~/.ssh/gcp-instance -C your\_user\_name

**~/.ssh** フォルダに **gcp-instance,gcp-instance.pub** という **プライベートキー、パブリックキー** が作成されます。

パブリックキーの中身をコピーします。

> $ cat ./.ssh/gcp-instance.pub

`ssh-rsa AAAAAAAAAAAAAAAAAAAAAAAAADDDDDDDDDXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .............................. ............. your_user_name`

作成したVMインスタンスをクリックすると、インスタンスの詳細が表示されます。編集をクリックするとSSH認証キーを追加するアイコンが表示されるので、ここをクリックして先程作成したパブリックキーの中身をコピーペーストします。

端末のターミナルでSSH認証に必要なプライベートキーを指定してSSH接続します。xx.xx.xx.xxはVMインスタンスに割当てられている外部IPです。

> $ ssh -i ~/.ssh/gcp-instance your\_user\_name@xx.xx.xx.xx

**OSログインを有効にした場合(enable-oslogin:TRUE)**

> **[OS Login を設定する  |  Compute Engine  |  Google Cloud...](https://docs.cloud.google.com/compute/docs/oslogin/set-up-oslogin?hl=ja)**
>
> OS Login を使用して、IAM ロールと権限により Linux 仮想マシン（VM）インスタンスへの SSH アクセスを制御します。

 ![Screenshot%20from%202019-05-31%2018-08-19](https://forum.ficusonline.com/uploads/default/original/1X/6ba0c59055944d7806ef1adcec25bb281d16372d.png)

**注意）**  
OSログインをメタデータの項目で指定して有効にした場合には、外部から全てのVMインスタンスへのSSH接続は拒否されます。この場合、外部からSSH接続したいVMインスタンスでOSログインを無効にする必要が有ります。カスタムメタデータで **enable-oslogin: FALSE** を追加します。

 ![Screenshot%20from%202019-05-31%2018-09-35](https://forum.ficusonline.com/uploads/default/original/1X/894541781eeff46365e890afff50e571b29c7b83.png)

**OSログイン**

> **[OS Login の概要  |  Compute Engine  |  Google Cloud...](https://cloud.google.com/compute/docs/oslogin?hl=ja)**

---

<div class="post-metadata">

### Author: ![tk-fuse](https://forum.ficusonline.com/user_avatar/forum.ficusonline.com/tk-fuse/32/255_2.png) [@tk-fuse](https://forum.ficusonline.com/u/tk-fuse)
#### Post date: [2022 年 1 月 22 日午前 7:12 UTC](https://forum.ficusonline.com/t/topic/305/2 "2022-01-22T07:12:26Z")

</div>

## OS Login マネージド SSH 接続

> **[SSH 接続について  |  Compute Engine  |  Google Cloud Documentation](https://docs.cloud.google.com/compute/docs/instances/ssh?hl=ja)**

* * *

## OS Loginを有効にした場合のSSH接続の手順について

### まず初めに以下を参照しOS Loginを有効化して下さい。

> **[OS Login を設定する  |  Compute Engine  |  Google Cloud Documentation](https://docs.cloud.google.com/compute/docs/oslogin/set-up-oslogin?hl=ja)**
>
> OS Login を使用して、IAM ロールと権限により Linux 仮想マシン（VM）インスタンスへの SSH アクセスを制御します。

**オプション 1:** プロジェクト全体のメタデータに `enable-oslogin` を設定して、プロジェクト内のすべてのインスタンスに適用する。

**オプション 2:** 既存のインスタンスのインスタンス メタデータに `enable-oslogin` を設定する。

* * *

### ローカルマシンに **Google-Cloud-SDK** を事前にインストールします。

以下の記事を参照し **gcloudツール** と **Googleアカウント及びGCPプロジェクト** との紐づけを行います。

> [@GCP：最新版Google-Cloud-SDKのインストール](https://forum.ficusonline.com/t/topic/309):
>
> Ubuntu18.04の標準レポジトリでは、Google-Cloud-SDKのバージョンは最新ではありません。このためGCPに保存したDockerイメージを実行する際に認証エラーなどが生じます。回避策は提示されていますが、最新版ではKubernetes関連コマンドなども標準装備なので最新版をインストールした方が賢明なようです。 標準レポジトリバージョン $ gcloud -v Google…

* * *

### ローカルマシンでSSH認証キーペアを作成します。

> **[SSH 認証鍵を作成する  |  Compute Engine  |  Google Cloud Documentation](https://docs.cloud.google.com/compute/docs/connect/create-ssh-keys?hl=ja)**
>
> Linux と Windows の仮想マシン（VM）インスタンスに接続するための SSH 認証鍵を作成します。

```auto
$ ssh-keygen -t rsa -f ~/.ssh/KEY_FILENAME -C USER -b 2048

```

* * *

### 認証キーペアの公開キー **`KEY_FILENAME.pub`** を **gcloudツール** により、GCPのプロジェクトへ追加します。

> **[VM に SSH 認証鍵を追加する  |  Compute Engine  |  Google Cloud Documentation](https://docs.cloud.google.com/compute/docs/connect/add-ssh-keys?hl=ja)**
>
> VM インスタンスに SSH 認証鍵を追加する方法

```auto
$ gcloud compute os-login ssh-keys add \
    --key-file=KEY_FILE_PATH \
    --project=PROJECT \
    --ttl=EXPIRE_TIME

```

- `KEY_FILE_PATH`: ワークステーションの公開SSH認証鍵のパス。鍵は `public-openssh` 形式を使用する必要があります。
- `PROJECT`: 省略可。SSH 認証鍵を使用するプロジェクト。このフィールドを指定すると、組織外のプロジェクトまたは Cloud Identity のメンバーではないプロジェクトで SSH 認証鍵を使用できます。
- `EXPIRE_TIME`: 省略可。SSH 認証鍵の有効期限。

### ローカルマシンからのSSH接続

> **[Linux VM への接続  |  Compute Engine  |  Google Cloud Documentation](https://docs.cloud.google.com/compute/docs/connect/standard-ssh?hl=ja)**
>
> SSH を使用して、Google Cloud CLI と Google Cloud コンソールから Linux VM インスタンスの外部 IP アドレスに接続します。

```auto
$ ssh -i PATH_TO_PRIVATE_KEY USERNAME@EXTERNAL_IP

```

SSH認証キーの **プライベートキー** を指定。 **EXTERNAL\_IP** は **GCPのコンソール** から確認できます。
