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
Yes, it is very possible. Just managed it today.
What you need to do is create an ssh connection with the google collab. Write this on a google collab jupyter Notebook:
import random, string
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
#Set root password
! echo root:$password | chpasswd
! mkdir -p /var/run/sshd
! echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
! echo "PasswordAuthentication yes" >> /etc/ssh/sshd_config
! echo "LD_LIBRARY_PATH=/usr/lib64-nvidia" >> /root/.bashrc
! echo "export LD_LIBRARY_PATH" >> /root/.bashrc
#Run sshd
get_ipython().system_raw('/usr/sbin/sshd -D &')
#Ask token
print("Copy authtoken from https://dashboard.ngrok.com/auth")
import getpass
authtoken = getpass.getpass()
#Create tunnel
get_ipython().system_raw('./ngrok authtoken $authtoken && ./ngrok tcp 22 &')
#Print root password
print("Root password: {}".format(password))
#Get public address
! curl -s http://localhost:4040/api/tunnels | python3 -c \
"import sys, json; print(json.load(sys.stdin)['tunnels'][0]['public_url'])"
Check your ngrok status to get your portnum(via the website)
After that you can connect to collab via ssh:
This is the terminal command:
$ ssh @0.tcp.ngrok.io -p
(it will ask you for the password generated by the above snipet) You should be able to connect now.
But if you want to use vscode, repeat the connection with ssh via the Remote SSH extension
sources:
remote ssh: https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-ssh connection: Connect to google collab with ssh from console from PC