16
11

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 1 year has passed since last update.

Google ColabでSSH接続する方法(まとめ)

Last updated at Posted at 2021-05-05

Google Colab が便利すぎるので、はまっています。Colab Proではブラウザにもターミナルがついているけど、やっぱりちょっと遅いので、ローカルのターミナルから使いたいですよね。ColabでSSH接続する方法まとめてみました。

2022/10/27 残念なお知らせ
Google Colabの規約でSSH接続が禁止されました😿
https://research.google.com/colaboratory/faq.html#limitations-and-restrictions

以下の手法でColabにSSH接続すると、規約違反になってしまいます。ご注意ください。ちなみに、有料版については、特に明言がありませんが、有料版を利用している場合でも、同様の警告がでましたので、たぶん規約違反になるのかと思われます。残念!

方法

  • (1) cloudflared を使う方法
  • (2) ngrok を使う方法
  • (3) 別途契約のVPSのsshを介する方法

(1) cloudflared を使う方法

cloudflaredの機能を使う方法。Colabのコードセルに以下を記述して実行します。

# Cloudflareを使う場合
# Install colab_ssh on google colab
!pip install colab_ssh --upgrade
from colab_ssh import launch_ssh_cloudflared, init_git_cloudflared
launch_ssh_cloudflared(password="PASSWORD")

# Optional: if you want to clone a github repository
# init_git_cloudflared(githubRepositoryUrl)

macOSのローカルにHomebrewでcloudflaredをインストールします。以下のコマンドを実行します。

$ brew install cloudflare/cloudflare/cloudflared

そして、指示の通り、~/.ssh/configに設定を追加して、macのターミナルにコマンドを入力します。指示が丁寧で割と簡単に接続できます。

(2) ngrok を使う方法

個人的にちょっと面倒だと感じたのと、下記に詳しい説明があるので譲ります。

  • [https://qiita.com/hazigin/items/c291adf5dc9ccc13d11f](Google Colab をSSH と VS Code で使う)

(3) 別途VPSのsshを介する方法

サクラやConohaなど、その辺の格安VPSをsshポートフォワーディングで介すれば、かなり気軽に接続できます。月々500円ちょっとで契約できるので、Colab ProとVPS足してもお小遣いレベルで使えます。

最初に、OpenSSH Serverをインストールします。コードセルで以下を実行します。SSHサーバーをインストールして実行します。

! apt-get install -qq -o=Dpkg::Use-Pty=0 openssh-server pwgen > /dev/null
! echo root:PASSWORD | chpasswd
! mkdir -p /var/run/sshd
! echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
! echo "PubkeyAuthentication yes" >> /etc/ssh/sshd_config
! echo "PasswordAuthentication yes" >> /etc/ssh/sshd_config
get_ipython().system_raw('/usr/sbin/sshd -D &')

次いで、ColabのSSHサーバーを、VPSのSSHにポート転送します。ポート番号は何でも良いのですが、ここでは8888番にしてみます。Colab Proのターミナルで以下を実行します。

! ssh -R 8888:localhost:22 vpsuser@vpsdomain.com

そして、PCのターミナルから以下のコマンドを実行します。

$ ssh root@vpsdomain -p8888

ただし、この場合、VSPの以下の設定を変更する必要があります。

  • VPSのファイアウォールで8888番も解放しておくこと
  • VPSの /etc/ssh/sshd_config の設定を変更する
  • echo "GatewayPorts yes" >> /etc/ssh/sshd_config

詳しい設定は以下のサイトが役に立ちます。

(結論) 格安VPS + Colabの組み合わせが最強

VPSで重たい処理やると、すぐに制限がかかってしまうので、重たい処理はColabでやって、VPSにSCPやGitでデータバックアップという流れが良い感じです。

上記のコードセルでやっている処理を、シェルスクリプトにしてGoogleドライブに保存しておけば、Googleドライブをマウントして、コマンド一発でSSHの接続設定が整うようにできます。

VPSにGitリポジトリを作成して、Colabの作業の最初にGitをcloneするようにして、作業終了後にcommit & pushして閉じるようにすれば、かなり良い流れで作業できます。というのも、GoogleドライブにGitリポジトリを配置すると、もの凄く重いので。あくまでもGoogleドライブはzip圧縮してデータ保存するのが中心です。

この流れにすれば、Colabで毎回作業ストレージが初期化されるのもメリットとなり、OSS開発など不特定多数の環境で使ってもらう場合に、まっさらな環境で毎回依存チェックできるので非常に便利です。

参考

16
11
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
16
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?