2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Google ColaboratoryをVSCodeでssh接続して使えるようにした件について

Last updated at Posted at 2021-04-14

はじめに

最近は技術記事がGoogle Colaboratoryにあわせてサンプルコードを書いてくれることが多く、Colabを使う機会が格段に増えました。そこでGPUが使用制限に達してしまい、Colab proを使おうかと考えていたのですが、それならVSCodeで使えるようにしたいなと思うようになったので調べていたのですが、そもそもSSHというものをなんとなくでしか知らない状態でやっていたので、時間がかかったため、初心者に向けて手順を省略せずに説明しようと思い、本日は紹介をします。

準備

ngrokのアカウントを作成します。
https://ngrok.com/

Google Colaboratoryを開きます。
そして以下のコードを1つずつセルにコピーして実行します。

import random, string, urllib.request, json, getpass
# Generate root password
password = ''.join(random.choice(string.ascii_letters + string.digits) for i in range(20))
# Download ngrok
! wget -q -c -nc https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip
! unzip -qq -n ngrok-stable-linux-amd64.zip
# Setup sshd
! apt-get install -qq -o=Dpkg::Use-Pty=0 openssh-server pwgen > /dev/null

ngrokのサイトにログインし、Getting Started->Your Authtokenを開き、Configuration Fileの項目にあるtokenをコピーします。

# これはコードでなくngrokの画面の説明です
# in ngrok.yml
authtoken: XXXXXXXXXXXXX(ここをコピー)

次に以下をColabで実行します。

#Run sshd
get_ipython().system_raw('/usr/sbin/sshd -D &')

# ngrokで自分のトークンを確認する
authtoken = "あなたのトークンをここにいれる"
#Create tunnel
get_ipython().system_raw('./ngrok authtoken $authtoken && ./ngrok tcp 22 &')

!pip install colab_ssh --upgrade
from colab_ssh import launch_ssh# in a separate cell in case you need to restart the service

ngrokToken = "1r395f88TULELKkSEYktSWGLWIT_4g8VkjVdeKHqZybzzWUhd"
launch_ssh(ngrokToken, password="password")

with urllib.request.urlopen('http://localhost:4040/api/tunnels') as response:
  data = json.loads(response.read().decode())
  (host, port) = data['tunnels'][0]['public_url'][6:].split(':')
  print(f'SSH command: ssh -p{port} root@{host}')

これでSSH接続のためのColabでの準備は終了です。

VSCodeでの設定

vscodeを開きます。
ctrl+pで検索ウィンドウを開きconfigと入力して .sshにあるconfigファイルを開きます。

一番下の行にColabから出力されたものを貼り付けます。
私の場合はこちらを貼り付けました。(人によって内容は異なります)

Host google_colab_ssh
    HostName 6.tcp.ngrok.io
    User root
    Port 11121

SSH接続

左メニューから拡張機能を選択してRemote - SSHをインストールします。

左のメニューからリモートエクスプローラー(モニターに><のマークのアイコン)を選択して、上のVをクリックして(セレクトボックスから)SSH Targetsを選択します。

google_colab_sshを見つけ、Connect to Host in New Windowをクリック (フォルダーマークに+がかかれたアイコン)します。

新たなウインドウが表示されて、パスワードの入力を求められるのでpasswordと入力します。 (Colabで設定しました)

左メニューの拡張機能からPythonをインストールします。

左のメニューからフォルダーを開く(青ボタン)を選択して、上部に/root/とでるのでOKを押す (これでColabのrootディレクトリをカレントディレクトリにできます)

ctrl+shift+pでコマンドパレットを開き、Jupyter: Create New Blank Notebookを検索し、選択することで新しいnotebookを作成できます。

試しにセルに以下を入力して、Colabが動くか確認します。

print("Hello World")

ファイルは保存ボタンを押さないと新規作成されませんので、作成する際には最初に上部メニューの保存ボタンを押して任意のディレクトリに保存してください。

ターミナルから接続する

ターミナルから接続する場合はColabで出力されるコマンドを入力します。
私の場合は以下のように出力されています

SSH command: ssh -p11121 root@6.tcp.ngrok.io

sshコマンドがなかったため、私はapt-get update``apt-get install sshを行いました。

コマンドを打った後、ssh接続の確認をとられるので、yesと入力してからパスワードを打ち込めば接続ができるかと思います。

終わりに

SSH接続など当たり前のようにやっていますが、私のようにやったことないかたも多いのかなと思い、手順を省略せず記事にしてみました。VSCodeの左メニューなどわからないとなったら、調べていただけると簡単にわかるかと思います。

参考サイト

https://qiita.com/hazigin/items/c291adf5dc9ccc13d11f
https://webbigdata.jp/ai/post-7248
https://blog.serverworks.co.jp/tech/2020/02/20/vscode-remote-ssh/

2
4
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
2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?