LoginSignup
4
1

More than 5 years have passed since last update.

GCE f1-micro インスタンスを介して reverse SSH 接続する

Last updated at Posted at 2017-06-01

漢なら GCE(Google Compute Engine) f1-micro インスタンスですね!

f1-micro インスタインスを介して, 外出先の PC からでもオフィスとか GPU クラスタとかのリモートに接続したいですね!

やりましょう!

Reverse SSH

今回は, とりあえずてっとりばやく環境が構築できる reverse SSH tunneling を使います.

構成はこんな感じになります.

+-------------+                 +----------+         +----------+
| remote node |  -------------> | f1 micro |  <----- | local PC |
+-------------+                 +----------+         +----------+
                  reverse SSH                   SSH

f1 micro のインスタンスでは, OS には, なんとなく CoreOS を選んでみました.

サーバー側設定

remote note 側での設定です. gcloud をインストールしてあるものとします.
こんな感じのスクリプトを作り, crontab で回すようにします.

pgrep -f "google_compute_engine" > /dev/null 2>&1 || gcloud compute --project "example.com:PROJECTNAME" ssh --zone "us-west1-a" "INSTANCE" -- -N -f -R 19998:localhost:22

既存に動いているプロセス判定はもっとスマートにしたいところ.

これにより, f1 micro インスタンスで, ポート 19998 に ssh すると, remote node にログインできるようになります.

ローカル PC 設定

gcloud コマンドを駆使して直接リモートに console ログインするのはなんかうまくいかなかったので, 一旦 gcloud ssh ~ とかして f1 micro インスタンスの IP アドレスと, 使っている SSH private 鍵を取得しておきます.

その後, ~/.ssh/config にホスト名記載します.
CoreOS では nc はインストールされておらず, 同様の機能のものとして ncat がインストールされているので, ncat を使うようにします.

Host f1-micro
    HostName xxx.xxx.xxx.xxx
    IdentityFile ~/.ssh/google_compute_engine
    ForwardAgent yes

Host remote-note
    ForwardAgent yes
    ProxyCommand ssh f1-micro ncat localhost 19998
    ServerAliveInterval 60
    ServerAliveCountMax 4

これで, 手元 local PC から,

$ ssh remote-node

とするとリモート PC にログインできるようになります.

(optional) OpenVPN を使う

接続したいノード数が増えてきたりしたら, OpenVPN に移行するのも検討してみてください.

GCE(Goole Compute Engine) CoreOS インスタンスで OpenVPN サーバを立てる
https://qiita.com/syoyo/items/f4ed1186b644dfdc8c0c

TODO

  • crontab で回すときに既存でプロセスが動いているときの pgrep を極める.
  • 証明書ベースログインとかしたい.
  • 優秀な若人が, f1 micro インスタンスを活用することで, 人類史上最速で優秀な GCE 若人が育成されるスキームを確立したい 日々精進あるのみですね.
4
1
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
4
1