Rik*_*ika 24 visual-studio-code google-colaboratory
我知道在 GCP 上,我们可以设置一个 vscode 服务器并连接到它。但是我在这里想要的是知道是否可以从本地运行的 vscode连接到 Google Colab 上的运行时实例(免费的,即:https://colab.research.google.com)。如果我没记错的话,我们可以在 vscode 中连接到任何远程 Jupyter 内核,而不是在本地创建一个新实例并连接到它。
所以我想知道是否可以先创建一个 Python 3 notebook,然后从本地机器启动 vscode,连接到 Colab 运行时并在 vscode 中编写代码?
这里没有任何本地内容,所有文件、笔记本、一切都驻留在 Google Colab 上,它只是使用 vscode 而不是 Google 自己的编辑器来编码和执行代码(调试等)。
感谢回答,我可以成功连接到 Google Colab。但是,当我退出 ssh 并尝试再次登录时,我遇到了以下情况:
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)
Run Code Online (Sandbox Code Playgroud)
我重新启动了 Google Colab 运行时,我什至更改了 ngrok 令牌并再次尝试,没有运气!
Kor*_*ich 16
我刚刚找到了另一种不使用 ssh 的方法。
# Install jupyterlab and ngrok
!pip install jupyterlab==2.2.9 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))
Run Code Online (Sandbox Code Playgroud)
然后它会显示一个 JupyterLab URL
http://f1fe6fb39df6.ngrok.io # for example
Run Code Online (Sandbox Code Playgroud)
您现在可以单击它来运行 JupyterLab。或者将 URL 与 VSCode 一起用于远程 Jupyter 内核。
你也可以使用我的库来缩短它。
!pip install kora -q
from kora import jupyter
jupyter.start(lab=True)
Run Code Online (Sandbox Code Playgroud)
den*_*niz 11
当前接受的答案对我不起作用。对我有用的是在谷歌协作中运行以下命令:
\nimport random, string\npassword = \'\'.join(random.choice(string.ascii_letters + string.digits) for i in range(64))\n\n# install pyngrok for opening a tunnel\n!pip install pyngrok -q\n#Setup sshd\n! apt-get install -qq -o=Dpkg::Use-Pty=0 openssh-server pwgen > /dev/null\n\n#Set root password\n! echo root:$password | chpasswd\n! mkdir -p /var/run/sshd\n! echo "PermitRootLogin yes" >> /etc/ssh/sshd_config\n! echo "PasswordAuthentication yes" >> /etc/ssh/sshd_config\n! echo "LD_LIBRARY_PATH=/usr/lib64-nvidia" >> /root/.bashrc\n! echo "export LD_LIBRARY_PATH" >> /root/.bashrc\n\n#Run sshd\nget_ipython().system_raw(\'/usr/sbin/sshd -D &\')\n\n#Ask token\nprint("Copy authtoken from https://dashboard.ngrok.com/auth")\nimport getpass\nauthtoken = getpass.getpass()\n\n#Create tunnel\nfrom pyngrok import ngrok\nngrok.set_auth_token(authtoken)\nprint(ngrok.connect(22, "tcp"))\n!whoami\nprint("Password: {}".format(password))\nRun Code Online (Sandbox Code Playgroud)\n输出看起来像这样(只是重要的部分):
\n.\n.\n.\nCopy authtoken from https://dashboard.ngrok.com/auth\n\xc2\xb7\xc2\xb7\xc2\xb7\xc2\xb7\xc2\xb7\xc2\xb7\xc2\xb7\xc2\xb7\xc2\xb7\xc2\xb7\nNgrokTunnel: "tcp://5.tcp.ngrok.io:12345" -> "localhost:22"\nroot\nPassword: <64-digit-password>\nRun Code Online (Sandbox Code Playgroud)\n然后你就可以做ssh root@5.tcp.ngrok.io -p 12345,当询问时,输入<64-digit-password>就可以了!
小智 8
是的,这是很有可能的。今天刚搞定。
您需要做的是创建与 google collab 的 ssh 连接。在 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'])"
Run Code Online (Sandbox Code Playgroud)
检查您的 ngrok 状态以获取您的端口号(通过网站)
之后,您可以通过 ssh 连接到 collab:
这是终端命令:
$ ssh <user>@0.tcp.ngrok.io -p <portNum>
Run Code Online (Sandbox Code Playgroud)
(它会要求您提供上述 snipet 生成的密码)您现在应该可以连接了。
但是如果你想使用vscode,通过远程SSH扩展重复与ssh的连接
来源:
远程 ssh:https : //marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-ssh连接:从 PC 的控制台通过 ssh 连接到 google collab
| 归档时间: |
|
| 查看次数: |
19170 次 |
| 最近记录: |