sshで一発rootログイン @GCE for ISUCON5 4ステップ！


今年のIsucon5では、GCPを使用できるようになったらしく
我らGCPUGでは、可能な限りサポートするようになりました。
GCPUGよろしく＞ http://gcpug.jp/

早速GCEでの質問が来てました。

# GCEのインスタンスにsshでルートログインしたーーい！！
GCEおよびGCPは、デフォルトでApps(gmail)アカウントと強烈に紐付いており、GCPへのアクセス権限のあるユーザーは自動的に各VMにログインできたりする素晴らしい機能なのであります。なのでrootユーザーでログインしたいとなると、そんなユーザAppsに居ないぞということになります。本来は超便利なgcloudコマンドでですが、謎ラッピングされているため、rootでログインとなると普通にはしにくいのではないかという予想。
起動前にユーザー作って、sshコマンドで入れば解決です。

# 必要なもの
## 大会提供の練習用のイメージ
＞ここのサイトに超詳しく載ってるのでコピーする。
http://isucon.net/archives/45253058.html#5_1

## ローカルのrootユーザーの鍵（下記Step1で作成


## 手順概要
Step1) ローカルでrootユーザーの鍵作成
Step2) GCEのVM作成時に上記鍵を登録
Step3) VM起動後にPermitRootLogin yes 変更&&再起動
Step4) ローカルからsshコマンドで鍵指定してログイン

# 詳細手順

# Step1) ローカルで鍵作る
![スクリーンショット 2015-08-31 18.05.16.png](https://qiita-image-store.s3.amazonaws.com/0/4036/249611b7-aefd-d147-a35c-807a9c1aedd5.png "スクリーンショット 2015-08-31 18.05.16.png")
上記環境で作成しました。

ルートになって

```sh
$sudo su -
```

.sshフォルダー作って入る

```sh
$ mkdir .ssh
$ cd .ssh/
```

鍵作る。（例はノーパスだけど、パスフレーズつけろよ絶対にだ）

```sh
ssh-keygen -d -f nopass-dsa -N ''
```

鍵出来たのでpubをコピーする

```sh
cat nopass-dsa.pub
```

# Step2) VM作成時に大会提供の手順と違うことを一つする

![vm_init_setting.png](https://qiita-image-store.s3.amazonaws.com/0/4036/699ee66d-bcb2-680c-e203-44ead0e0b03c.png "vm_init_setting.png")

VMの作成時に詳細設定＞アクセスとセキュリティー の中で
SSHキーを登録できるので、Step1でコピーした公開鍵をペチョする。

おもむろに起動する。

# Step3) sshd_configの設定を変えて反映する。

まだルートログイン出来ないので、GCP consoleのWebUI等で
当該VMにログインし、sshd_config を変更する。

rootでコンフィグ開く

```sh
sudo vim /etc/ssh/sshd_config
```

下記パラメータを変更する
変更前 `PermitRootLogin no`
変更後 `PermitRootLogin yes`

sshdを再起動して反映する

```sh
sudo service sshd restart
```

# Step4) ローカルからrootでsshする
Step1の秘密鍵を指定して、sshコマンドを用いてログインする
デフォルトは固定IPついてないので接続先は
エフェメラルな外部IPにつなぎに行く

![Cursor_と_Compute_Engine_-_test-chaos.png](https://qiita-image-store.s3.amazonaws.com/0/4036/78e73803-30ca-8276-3272-c99e44e92d0b.png "Cursor_と_Compute_Engine_-_test-chaos.png")

sshコマンド

```sh
$ ssh -i /path/to/Step1の秘密鍵 -o UserKnownHostsFile=/dev/null -o CheckHostIP=no -o StrictHostKeyChecking=no root@VMの外部IP
```

# 結果

```sh
[root@test-a2c-ic-001 ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 42:01:0A:F0:1B:48  
          inet addr:10.240.27.72  Bcast:10.240.27.72  Mask:255.255.255.255
          inet6 addr: fe80::4001:aff:fef0:1b48/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1460  Metric:1
          RX packets:7668 errors:0 dropped:0 overruns:0 frame:0
          TX packets:7419 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:972508 (949.7 KiB)  TX bytes:1409613 (1.3 MiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:27 errors:0 dropped:0 overruns:0 frame:0
          TX packets:27 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:5098 (4.9 KiB)  TX bytes:5098 (4.9 KiB)

[root@test-a2c-ic-001 ~]# 
```

わーい入れたーー 
つ `rm -rf /` やり放題


# 思ったこと
- addUserするより楽なはず

VMに入ってユーザー作って有効化して鍵作ってどうこうするより、VM作成時に鍵渡すだけなので、思ったほどめんどくさくないはず。

- /homeにナゾのフォルダーがある

sugyanとtagomorisというフォルダーがあるのでnfsマウントされているのかとビビったがコレはゴミなので気にしないで良し。そっと消してあげてください。（これ対応中ぽい、そのうち消えてるかも）

- PermitRootLogin yesコワイ

以上