LoginSignup
0
0

More than 3 years have passed since last update.

ポートフォワーディングで github に ssh する

Posted at

やりたいこと

AWS で Private Subnet(基本的に外界から断絶されたサブネット)に配置されたサーバから、Public Subnet に配置された NAT インスタンス経由で、github にアクセスする。Local Machine から NAT 経由でサーバにアクセスするのの逆。Private Subnet 内のインスタンスからは、基本的にはあちこち ssh でアクセスさせない。

なお、サーバの OS は Amazon Linux2。

github の IP

github meta

クソいっぱいある!全部で56個(レンジ)ある。使うのは、git の部分の35個だけかな?

プレフィックスリスト の作成

Inbound/Outbound の Rules に1つずつ全部追加するのはシンドイので、プレフィックスリストを使う。

VPC > マネージドプレフィックスリスト

新規作成。今後増えるやも知れないので、上限40個くらいにしておく。溢れたら作り直す。

Security Group(or NACL) の設定

SG か NACL かは、ポリシー次第。
NAT の SG or Public Subnet の NACL or both の Outbound に 22 ポートで先程作成した プレフィックスリストを加える。
Private Subnet のサーバから Public Subnet の NAT サーバに対して 22 ポートを受け付けていなければ、開ける。Inbound。
22番ポートのルートがルートテーブルになければ、それも追加。

RSA key の作成および登録

github にアクセスしたい Private Subnet のサーバで、RSA Key を NAT 用と github 用の 2 つ作る。

$ cd ~/.ssh
$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com" -f nat_rsa
$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com" -f github_rsa

鍵の使い回しはやめよう!鍵にパスワードは付けよう!
生成された鍵を登録する。

SSH トンネルが成功している時点で、パーミッション関連は大丈夫だと思いますが、外に出ていく用に User を作ったりすることもあるかも知れないので、念の為書くと、

  • NAT サーバの .ssh: 700
  • NAT サーバの authorized_keys: 600
  • nat_rsa, github_rsa: 600

.ssh/config の設定

Host nat
    HostName xxx.xxx.xxx.xxx
    User your_user_name
    IdentityFile ~/.ssh/nat_rsa
    TCPKeepAlive yes
    IdentitiesOnly yes
Host github.com
    HostName github.com
    User git
    IdentityFile ~/.ssh/github_rsa
    ProxyCommand ssh -W %h:%p nat

NAT サーバの Private IP Address と your_user_name は自分のものに。

疎通確認

NAT サーバの /var/log/secure を監視しておく(私は、less / shift + f 派)

Private Subnet のサーバにて

$ ssh git@github.com
PTY allocation request failed on channel 0
Hi xxxxx! You've successfully authenticated, but GitHub does not provide shell access.
Connection to github.com closed.
Killed by signal 1.

つながった。NAT サーバのログもちゃんと反応している。
clone 等も問題なくできる。

というわけで、NAT 経由の ssh ポートフォワーディングで、github に接続できた。おしまい。

0
0
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
0
0