踏み台Compute(VM) に PrivateリソースのSSH鍵を置いてはいけない。Pageant と Putty, TeraTerm, WinSCP で、踏み台ComputeにSSH鍵を置かずに Private Compute に接続してみる。(Oracle Cloud Infrastructure)

タイトルが長い彡(^)(^) 踏み台Compute(VM) に PrivateリソースのSSH鍵を置いてはいけません。踏み台Compute(VM)自体を使うな？？たしかに OCI にも Bastionサービスというものはあるのですが、ちょっと使い勝手が悪いのです。

この記事では SSH Agent の一つである Pageant と Putty, TeraTerm, WinSCP で、踏み台ComputeにSSH鍵を置かずに Private Compute に接続してみます。

# 1. なぜ 踏み台Compute(VM) に PrivateリソースのSSH鍵を置いてはいけないのか？
Public Subnet = インターネットに開放された Compute(VM) は常に攻撃に晒されていて、OS等の脆弱性を衝かれてクラック(乗っ取り)される可能性があります(※)。Privateリソースの SSH秘密鍵 を 踏み台Compute(VM) に置くと、踏み台Compute(VM) がクラックされた際に Privateリソースへの侵入を簡単に許してしまいます。従って踏み台Compute(VM) には SSH秘密鍵を置いてはいけません。
※余談ですが接続元のIP/CIDRをファイヤーウォールで限定する境界型防御は、この観点では有効です。

<font color="FF0000">**踏み台Compute(VM)にはSSH鍵に限らず、あらゆる認証の情報(パスワードなど)を残してはいけません。**</font>

……こう書いてみると、踏み台には Compute(VM) を使用せずに Bastion等のサービスを使った方が良くはありますね。OCI なら Bastion、AWS なら SSM を使うのがより安全ではあります。
彡(ﾟ)(ﾟ)

> OCI Bastion
> https://www.oracle.com/jp/security/cloud-security/bastion/
> 
> ステップ 8: (オプション) Session Manager を通して SSH 接続のアクセス許可を付与および制御する
> https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/session-manager-getting-started-enable-ssh-connections.html

もちろんPC等の端末に格納したSSH鍵を端末ごと物理的に奪取されたり、端末自体をクラックされてメモリ内を覗き見されたりする可能性はあるのですが、踏み台Compute(VM)に鍵を格納するよりはリスクは低くなります。

# 2. 検証したOCI環境

お馴染み？のこれです。アイコンが古いやつのまま(ﾟεﾟ )

https://qiita.com/ora_gonsuke777/items/08e4781af8c4f7e114ff

https://qiita.com/ora_gonsuke777/items/d110468f8448b0ba9631

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/ea3de81f-09c0-ba9b-9c25-889c343c1ea6.png)

# 3. Pageant(Putty) のインストール

詳細は省略、下記から Putty をダウンロードしてインストールしましょう。Pageant も付いてきます。
https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html


# 4. Pageant の起動とSSH鍵の読み込み

Pageant を起動して SSH秘密鍵を読み込ませます。ここも難しいところは特に無いので詳細は省略

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/e160789e-e628-6d87-b877-1bcee66fb920.png)

# 5. Pageant + Putty で Private Compute に 踏み台Compute経由で接続
Putty で 踏み台Computeに接続します。この時Connection-SSH-Authの「Attempt authentication using Pageant」「Allow agent forwarding」にチェックを入れます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/236ac2d2-6368-2396-0faf-ca16d4dc9639.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/47905293-0310-e3be-78fc-d7250ad03d72.png)

踏み台接続後に Private Compute にSSH接続します。

```python
Using username "opc".
Authenticating with public key "" from agent
Activate the web console with: systemctl enable --now cockpit.socket

Last login: Tue Jul 16 22:08:25 2024 from xxx.xxx.xxx.xxx
[opc@ayu-bastion001 ~]$ ssh xxx.xxx.xxx.xxx
Activate the web console with: systemctl enable --now cockpit.socket

Last login: Tue Jul 16 18:59:34 2024 from xxx.xxx.xxx.xxx
[opc@ayu-private001 ~]$
```

Private Compute にSSH接続できました。

# 6. Pageant + TeraTerm で Private Compute に 踏み台Compute経由で接続
TeraTerm で踏み台Computeに接続します。この時「エージェント転送する」「Pageantを使う」にチェックを入れます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/2e1a8d2a-a160-4bf0-b6cb-f2c43e2f6bc7.png)

踏み台接続後に Private Compute にSSH接続します。ポップアップが出るので「はい」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/e16a3c34-60a5-2abb-1fef-4739099753e2.png)

```python
Activate the web console with: systemctl enable --now cockpit.socket

Last login: Tue Jul 16 22:19:11 2024 from xxx.xxx.xxx.xxx
[opc@ayu-bastion001 ~]$ ssh xxx.xxx.xxx.xxx
Activate the web console with: systemctl enable --now cockpit.socket

Last login: Tue Jul 16 22:11:35 2024 from xxx.xxx.xxx.xxx
[opc@ayu-private001 ~]$
```

Private Compute にSSH接続できました。

# 7. Pageant + WinSCP で Private Compute に 踏み台Compute経由で接続

WinSCP で Private Compute に接続します。接続先は Private Compute の Private IP, SSHトンネルに踏み台Computeの Public IPを設定します。SSH認証のオプションとして「Pageantでの認証を試みる」「エージェントの転送を許可する」をチェックして下さい。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/191b7b7b-174c-3e9d-09c9-ba6344f64e60.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/dba6dcc5-0ab3-5abb-fbd4-423e64bd7952.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/79cf586f-8a60-5d33-8814-431a83596e27.png)

ログインボタンを押すと接続できました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/2785fc1f-bb84-a370-2b90-5c758d957b0c.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/ce78efd7-a41e-9214-c1ca-f5316a2f7e06.png)

# 8. まとめ

昨今はセキュリティ系の剣呑な話題が多いので自衛していきましょう。冒頭でも話した通りBastion等のサービスを活用した方が安全なので、そちらも進められるようにしていくぜ？過去に下記みたいなのも書きましたけど。
彡(^)(^)

https://qiita.com/ora_gonsuke777/items/6d69393e98eb561d36e3