Google Cloud Shell是Google Cloud的一个Shell环境,默认集成了很多开发环境和Google Cloud SDK可以方便的管理云资源,它本身是一台 Docker 虚拟机,$HOME
有5G永久磁盘,但是要求必须在120天内访问过,否则就会清空。其他目录的修改断开连接一小时后就会重置,空间不足的问题可以通过 gcsfuse my-bucket ~/my-bucket
映射Cloud Storage到本地。
支持网页预览,网页登录后访问 https://ssh.cloud.google.com/devshell/proxy?port=8080会指向Cloud Shell的8080
端口,端口切换需要在网页端设置。
启用增强模式后在24小时内会提高主机性能,但每周有60小时使用时限,Cloud Shell的定位就是一台远程开发机,不能24小时运行,如果需要更强的性能可以尝试自定义环境。
说Cloud Shell是Google为开发人员发放的福利也不为过。
_,met$$$$$gg. ,g$$$$$$$$$$$$$$$P. OS: Debian 9.9 stretch ,g$$P"" """Y$$.". Kernel: x86_64 Linux 4.19.44+ ,$$P' `$$$. Uptime: 8h 49m ',$$P ,ggs. `$$b: Packages: 590 `d$$' ,$P"' . $$$ Shell: bash 4.4.12 $$P d$' , $$P Disk: 31G / 45G (68%) $$: $$. - ,d$$' CPU: Intel Xeon @ 2.2GHz $$\; Y$b._ _,d$P' RAM: 856MiB / 3697MiB Y$$. `.`"Y$$$$P"' `$$b "-.__ `Y$$ `Y$$. `$$b. `Y$$b. `"Y$b._ `""""
但是目前使用Cloud Shell只能在网页端,ALPHA SDK中提供的SSH访问方式,我本地测试没有成功唤起PuTTy,这样以来就感觉Cloud Shell离我们的距离有些远,要是能集成到Visual Studio Code那该多好,经过一番折腾后总算是能顺畅使用了,把结果分享在这里,也做个记录。
安装 gcloud 命令行工具
首先需要为Google Cloud Shell设置SSH key,操作需要alpha
版本的SDK。
gcloud components install alpha gcloud components install beta gcloud components update
升级完成后运行命令
gcloud alpha cloud-shell ssh --dry-run
该命令会检查本地证书,如果不存在会创建新的证书。
下载 CloudShell
下载工具包 https://github.com/ixiumu/google-cloud-shell-cli-go/releases/,解压文件,另外本地需要有Python环境。
在命令行下运行cloudshell info
第一次执行会弹出Google登录验证,并缓存授权文件user_credentials.json
到程序目录,接着运行cloudshell ssh
就可以连接到 Google Cloud Shell 了。
使用Visual Studio Code Remote SSH连接
打开VS Code配置文件设置文件路径。
{ "remote.SSH.path": "C:/cloudshell_with_vscode_win64/vscode_ssh.cmd" }
编辑ssh配置文件%UserProfile%\.ssh\config
添加cloudshell主机
Host cloudshell HostName 127.0.0.1
这里的IP是随便填写的,因为我们使用vscode_ssh.cmd
代替了系统ssh,作为一个前置路由,如果是普通的SSH主机调用系统ssh.exe
,如果主机名为cloudshell
,唤则起cloudshell.exe
连接 Google Cloud Shell。
“路由”文件内容,仅为展示原理,vscode_ssh.cmd
文件已经包含在 Releases 中。
@echo off cd %~dp0 if "%1"=="" ( type %UserProfile%\.ssh\config | find /i "host " exit /b ) set vscode_host="%3" set port="%2" if "%vscode_host:cloudshell=%"=="%vscode_host%" ( ssh %* ) else ( taskkill /IM cloudshell.exe >nul 2>&1 cloudshell.exe ssh -D %port% )
使用代理
Cloud Shell 返回的 IP段还不错,但是Goole的IP一向是重灾区,可能需要配置代理才可以连接。
可以配置%UserProfile%\.ssh\config
Host *.cloudshell.dev ConnectionAttempts 5 ControlMaster no ControlPath none LogLevel quiet PasswordAuthentication no ServerAliveInterval 30 StrictHostKeyChecking no UserKnownHostsFile /dev/null IdentitiesOnly yes IdentityFile ~/.ssh/google_compute_engine LocalForward 127.0.0.1:8080 127.0.0.1:8080 LocalForward 127.0.0.1:8443 127.0.0.1:8443 ProxyCommand C:\Program Files\Git\mingw64\bin\connect.exe -S router:1080 %h %p
添加端口映射与代理,也可以修改cmd文件,添加代理参数
cloudshell.exe ssh -D %port% -o ProxyCommand="C:\Program Files\Git\mingw64\bin\connect.exe -S 127.0.0.1:1080 %%h %%p"
目前Visual Studio Code适配仅做了Windows端,其他系统兼容暂时没有准备动手,有兴趣的朋友欢迎提交 Pull requests 。