Is it possible to connect vscode (on a local machine) with Google Colab (the free service) runtime?

Rika picture Rika · Dec 28, 2019 · Viewed 10.7k times · Source

I know on GCP, we can set up a vscode server and connect to that. But what I'm after here, is to know whether it is possible to connect to the runtime instance on Google Colab (the free one ie: https://colab.research.google.com) from a locally run vscode. If I'm not mistaken, we can connect to any remote Jupyter kernel in vscode instead of creating a new instance locally and connecting to it.

So I want to know if it is possible to first create a Python 3 notebook and then from your local machine, fire up vscode, connect to the Colab runtime and code inside vscode ?

There is nothing local here, all files, notebooks, everything resides on Google Colab, it's just the coding and executing the code (debugging, etc) using vscode instead of Google's own editor.

Update

Thanks to the answer, I could successfully connect to Google Colab. However, when I exited the ssh and tried to log in again I faced this:

Creating config file /etc/ssh/sshd_config with new version
Creating SSH2 RSA key; this may take some time ...
2048 SHA256:yxFwLslfRq7YZFWNIhAD8TfJdp6sTfFbR2CXOWcysOA root@7561da0610da (RSA)
Creating SSH2 ECDSA key; this may take some time ...
256 SHA256:6Yo/7I9JPyYfKJYvtiVelNFHrIL7R1xaB09fDWbVYf4 root@7561da0610da (ECDSA)
Creating SSH2 ED25519 key; this may take some time ...
256 SHA256:r1HvJi/Y9twPkXoayNA4cSF55eH4MdOETHhXNSiC4ok root@7561da0610da (ED25519)
Created symlink /etc/systemd/system/sshd.service → /lib/systemd/system/ssh.service.
Created symlink /etc/systemd/system/multi-user.target.wants/ssh.service → /lib/systemd/system/ssh.service.
invoke-rc.d: could not determine current runlevel
invoke-rc.d: policy-rc.d denied execution of start.
Copy authtoken from https://dashboard.ngrok.com/auth
··········
Root password: aCsRocquey6953P9tHhF
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/usr/lib/python3.6/json/__init__.py", line 299, in load
    parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw)
  File "/usr/lib/python3.6/json/__init__.py", line 354, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python3.6/json/decoder.py", line 339, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib/python3.6/json/decoder.py", line 357, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

I restarted the Google Colab runtime, I even changed the ngrok token and tried again, no luck!

Answer

korakot picture korakot · Sep 5, 2020

I've just found another method without using ssh.

# Install jupyterlab and ngrok
!pip install jupyterlab pyngrok -q

# Run jupyterlab in background
!nohup jupyter lab --ip=0.0.0.0 &

# Make jupyterlab accessible via ngrok
from pyngrok import ngrok
print(ngrok.connect(8888))

It will then show a JupyterLab URL

http://f1fe6fb39df6.ngrok.io  # for example

You can click it to run JupyterLab now. Or use the URL with VSCode for remote Jupyter kernel.