A Step by Step Guide to Mounting GCP VM's File System on your Local Machine

Written by GokulNC | Published 2019/09/09
Tech Story Tags: gcp | step-by-step-guide | mounting-gcp-vm | file-system | latest-tech-stories | ssh-authentication | gcp-vm-on-windows | gcp-vm-on-linux

TLDR Google Cloud Platform’s Virtual Machine can be accessed through your local file explorer. The easiest way to use keys is to set up keys in your local machine & GCP VM with SSH. The next step is to install the tools WinFSP and SSHFS-Win to mount the VM to the VM's file system on Windows or Linux. The process is a matter of seconds in Linux using the same tools as the previous article mentioned below to setup keys in the GCP Virtual Machine. You can use the same keys for any number of VMs.via the TL;DR App

Ever wanted to browse the files in your Google Cloud Platform’s Virtual Machine through your local file explorer? Here’s one way to do that!

Setting up SSH Authentication

First of all, follow the steps in this article mentioned below to setup keys in your local machine & GCP VM:
How to create and connect to Google Cloud Virtual Machine with SSH
Ensure that you’re able to connect to your GCP VM via SSH as directed in that article before proceeding into this article.
Note for Windows users:
  • Export the private key from PuTTYGen as an OpenSSH key by selecting “Conversion->Export OpenSSH Key” and save it as “id_rsa” somewhere.
  • Copy your public key from PuTTYGen and save it as “ id_rsa.pub” along with the above file. (This will be helpful if you want the public key again to use it in a new VM)
Remember that you can use the same keys for any number of VMs instead of regenerating different keys.

Mounting the GCP VM on Windows

  • First, download and install the tools WinFSP and SSHFS-Win. (Recommended to install the 32-bit versions (x86))
  • Then copy paste the following batch script in a text editor and save it as ‘GCP_Mount.bat
  • @echo off
    
    :: OpenSSH Private Key File
    set KEY_PATH=C:\\Users\\GokulNC\\Desktop\\Keys\\GCP_VM\\id_rsa
    set USERNAME=GokulNC_GCP
    set REMOTE_DIR=/
    
    set /p IP=Enter the IP: 
    set /p DriveLetter=Enter the mount drive letter: 
    
    set CYGFUSE=WinFsp
    set PATH=C:\Program Files (x86)\SSHFS-Win\bin;%PATH%
    sshfs.exe -ofstypename=SSHFS -o idmap=user -o umask=000 -o volname=%IP% -o Compression=no -o reconnect,ServerAliveInterval=120 -o IdentityFile=%KEY_PATH% %USERNAME%@%IP%:%REMOTE_DIR% %DriveLetter%:
    
    :: Wait a few secs for it to become stable
    timeout 3 >NUL
    echo.
    echo.
    
    IF EXIST %DriveLetter%:\ (
      echo Connected to %USERNAME%@%IP% successfully and mounted %REMOTE_DIR% at %DriveLetter%:\
      echo.
      echo Minimize this window and continue browsing your remote host's FS.
      echo To terminate the connection, close this window.
    ) ELSE (
      echo Connection FAILED! Close this window.
    )
    
    echo.
    echo.
    pause >NUL
    pause >NUL
    echo Connection terminated. Close this window.
  • Edit the ‘KEY_PATH’ variable in the script to include the path of your ‘id_rsa’, and set the ‘USERNAME’ variable to the username you created along with the keys.
  • Double-click the script to run it and enter the details that it asks for.
  • You should get outputs similar to below:
That's it! Now you can browse your VM's files from Windows Explorer itself.

Mounting the GCP VM on Linux

It’s just a matter of seconds in Linux!
sudo apt install sshfs
sudo mkdir /mnt/gcpVM
To mount your VM to the above created mount-point, run the following one-line command with your username (ZZ) and VM’s external IP:
sshfs [email protected]:/ /mnt/gcpVM/ -o IdentityFile=~/.ssh/id_rsa -o reconnect,ServerAliveInterval=120
That’s it, the VM's file system should have been mounted at the given path!
(I believe similar steps should be sufficient for Mac Users, let me know in comments if it doesn’t work)
To unmount, use the following command:
fusermount -u /mnt/gcpVM

References


Written by GokulNC | Machine Learning Engineer, One Fourth Labs
Published by HackerNoon on 2019/09/09