remocolab is a Python module to allow remote access to Google Colaboratory using SSH or TurboVNC. It also install VirtualGL so that you can run OpenGL programs on a Google Colaboratory machine and see the screen on VNC client. It secures TurboVNC connection using SSH port forwarding.
ngrok currently doesn't work! ngrok works now
You cannot directory login to the SSH server running on a colab instace. remocolab uses third party service to access it from your PC. You can choose ngrok or Argo Tunnel. You don't need to buy paid plan. Which service works faster can depend on where/when you are.
If you use ngrok:
If you use Argo Tunnel:
ssh-keygen -t ecdsa -b 521
public_key
argument of remocolab.setupSSHD()
or remocolab.setupVNC()
like remocolab.setupSSHD(public_key = "ecdsa-sha2-nistp521 AAA...")
tunnel = "ngrok"
if you use ngrok.!pip install git+https://github.com/demotomohiro/remocolab.git
import remocolab
remocolab.setupSSHD()
SSH and TurboVNC:
!pip install git+https://github.com/demotomohiro/remocolab.git
import remocolab
remocolab.setupVNC()
remocolab.setupSSHD()
or remocolab.setupVNC()
, you can save ngrok token to a notebook.
Then, you might forget that your notebook contains it and share the notebook.remocolab.setupSSHD()
or remocolab.setupVNC()
in the code like remocolab.setupSSHD(ngrok_region = "jp")
.remocolab.setupSSHD()
takes about 2 minutesremocolab.setupVNC()
takes about 5 minutesIf you use TurboVNC:
localhost:1
and connect.remocolab.setupVNC()
's output to your TurboVNC viewer.When you got error and want to rerun remocolab.setupVNC()
or remocolab.setupSSHD()
, you need to do factory reset runtime
before rerun the command.
As you can run only 1 ngrok process with free ngrok account, running remocolab.setupVNC/setupSSHD
will fail if there is another instace that already ran remocolab.
In that case, terminate another instance from Manage sessions
screen.
Put the command to run the OpenGL application after vglrun
.
For example, vglrun firefox
runs firefox and you can watch web sites using WebGL with hardware acceleration.
remocolab can allow colab user reading/writing files on Google Drive. If you just mount drive on Google Colaboratory, only root can access it.
Click the folder icon on left side of Google Colaboratory and click mount Drive icon. If you got new code cell that contains python code "from google.colab import ...", create a new notebook, copy your code to it and mount drive same way. On new notebook, you can mount drive without getting such code cell.
Add mount_gdrive_to
argument with directory name to remocolab.setupSSHD()
or remocolab.setupVNC()
.
For example:
remocolab.setupSSHD(mount_gdrive_to = "drive")
Then, you can access the content of your drive in /home/colab/drive
.
You can also mount specific directory on your drive under colab user's home directory.
For example:
remocolab.setupSSHD(mount_gdrive_to = "drive", mount_gdrive_from = "My Drive/somedir")
remocolab.setupSSHD()
and remocolab.setupVNC()
ngrok_region
Specify ngrok region like "us", "eu", "ap". List of region.
This argument is ignored if you specified tunnel = "argotunnel"
.check_gpu_available
When it is True
, it checks whether GPU is available and show warning in case GPU is not available.tunnel
Specify which service you use to access ssh server on colab.
It must be "ngrok" or "argotunnel". default value is "argotunnel".mount_gdrive_to
Specify a directory under colab user's home directory which is used to mount Google Drive.
If it was not specified, Google Drive is not mount under colab user's home directory.
Specifying it without mounting Google Drive on Google Colaboratory is error.mount_gdrive_from
Specify a path of existing directory on your Google Drive which is mounted on the directory specified by mount_gdrive_to
.
This argument is ignored when mount_gdrive_to
was not specified.public_key
Specify ssh public key if you want to use public key authentication.
If you want to login as root, use following code:
!mkdir /root/.ssh
with open("/root/.ssh/authorized_keys", 'w') as f:
f.write("my public key")
!chmod 700 /root/.ssh
!chmod 600 /root/.ssh/authorized_keys
And replace user name colab in ssh command to root.
remocolab in kaggle branch works on Kaggle.
SSH only:
!pip install git+https://github.com/demotomohiro/remocolab.git@kaggle
import remocolab
remocolab.setupSSHD()
SSH and TurboVNC:
!pip install git+https://github.com/demotomohiro/remocolab.git@kaggle
import remocolab
remocolab.setupVNC()