TailscaleというVPNサービスを使って、秘密鍵・公開鍵なしで、VSCode Remote SSHする方法を備忘録がてら書きます。
はじめに
プログラマなら誰しも、出先から自宅にある強強PCにアクセスしたくなった経験があると思います。
そこで、RealVNCやらChromeリモートデスクトップやらを使ってみて、外部から画面をいじれるけど、動きがカクカクしてイライラした経験はないでしょうか?
本記事では、新しいサービスであるTailscaleというVPNサービスとVSCode Remote SSHすることでそのような問題に対処します。
(リモートデスクトップやVNCのように画面を乗っ取るのではなく、sshで計算環境のみにアクセスする方法について書きます。また、私はネットワークに疎いので、用語の使い方等がおかしいかもしれません。)
Tailscaleが100台まで無料で使えますので、個人利用の方は無料で使用可能だと思います。
言葉の定義
- ホストPC:sshで繋がれる(操作される)PC、強いPCを想定(受け)
- クライアントPC:VSCode Remote SSHを用いて接続を行うPC、ノートPCを想定(攻め)
既存研究
↑こちらは秘密鍵・公開鍵を使用した方法です。
提案手法の方が楽だと思います。
大まかな手順
- クライアントPCのブラウザでTailscaleにアクセス
- アカウントを作成(email, Google, Microsoft, Github等の選択肢がある)
- Tailscaleをダウンロード
- ホストPCでも1.と同様のことをする
- クライアントPCからホストPCに接続
- クライアントPCのブラウザで開かれたTailscaleの確認
- .ssh/config の記述
- VSCodeの設定と接続
1. クライアントPCのブラウザでTailscaleにアクセス
1.1. アカウントを作成
Get Startedからアカウントを作成します。
メールアドレス、Google, Microsoft, Githubなどの選択肢があります。
多分どれでも良いです。
1.2. Tailscaleをダウンロード
OSに合わせて、ダウンロードしてください。
↓のようになればOKです。
ホストPCに100.x.y.z
のIPアドレスが発行されています。
2. ホストPCでも1.と同様のことをする
ここでは、Ubuntuにインストールします。
1.1と同じアカウントでログインすると、ホストPCのブラウザで開かれたTailscaleはこのようになっているはずです。
コマンドをterminalで実行してください。
実行結果に
sudo tailscale up
を実行しろとあるなら、実行してください。
その結果、ホストPCのブラウザで開かれたTailscaleはこのようになっているはずです。
3. クライアントPCからホストPCに接続
3.1 クライアントPCのブラウザで開かれたTailscaleの確認
クライアントPCからTailscaleを開くと次のような画面になっているはずです。
3.2 .ssh/config の記述
.ssh/config (無ければ作成)に次の内容を記述する。
ここで、.ssh/config はosごとに適切な場所に作成してください。
- Mac, Linux: ~/.ssh/config
- Win: Users/{ユーザー名}/.ssh/config
- etc
Host {ホストPCの名前を好きに書く。例)HostPC}
HostName {ホストPCのIPアドレス(100.x.y.z);上の画像からコピペすれば良い}
User {ホストPCで使用するユーザー名(パソコン起動した時に選択するユーザー)}
{}内は適切に記述する。記述例↓
Host StrongHostPC
HostName 100.12.345.67
User OneOfUser
3.3 VSCodeの設定と接続
3.3.1 VSCodeにRemote - SSHの拡張機能をインストール
VSCodeの拡張機能でRemote - SSH
を検索してインストールする。
3.3.2 接続
左の窓にリモートエクスプローラー
が生えているはず。
そこを開いて、ホストPCの名前をクリックする。
ホストPCでのユーザーのパスワードを入力する。
ホストPCがMacである場合に、sshできない可能性があります。
このときは、リモートコンピュータにMacへのアクセスを許可するのMacでリモートログインを設定する
を参考に、外部からMacにアクセスできるように設定してください。
これで、VSCodeだけは、ホストPC(強いPC)になったかのように使用できます。
注意点
深層学習の訓練等の時間がかかる計算を行うときは、nohup
コマンドを使用してください。
なぜならば、sshの接続が切れる(電波が無くなる)と計算が終了してしまうからです。
nohup
コマンドを使用すれば、そのようなことが起こらないので、安心して使用することができます。