🌉

Windowsの gcloud cloud-shell ssh でOpenSSHを使う

2022/06/20に公開

この記事の内容

  • Windowsで gcloud cloud-shell ssh コマンドを実行すると、PuTTYが起動する。
  • Windows 10 1809以降 および Windows Server 2019以降は、Windowsのオプション機能として OpenSSHを導入できる。
  • gcloudにパッチをあてると、PuTTYの代わりにOpenSSHを使える。
  • VS Code Remote SSH で Cloud Shell に接続できるようになる。
  • Windows Terminal のタブで Cloud Shell に接続できるようになる。

前提

gcloudのssh.pyにパッチする

Cloud SDK は、インストール方法によって、以下のどちらかに格納されている:

  • C:\Users\matob\AppData\Local\Google\Cloud SDK
  • C:\Program Files (x86)\Google\Cloud SDK

そこにある .\google-cloud-sdk\lib\googlecloudsdk\command_lib\util\ssh\ssh.py(188)
を編集する:

C|\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\lib\googlecloudsdk\command_lib\util\ssh\ssh.py(188)
    @classmethod
    def Current(cls):
      """Retrieve the current environment.
  
      Returns:
        Environment, the active and current environment on this machine.
      """
-     if platforms.OperatingSystem.IsWindows():
+     if not platforms.OperatingSystem.IsWindows():
        suite = Suite.PUTTY
        bin_path = _SdkHelperBin()
      else:
        suite = Suite.OPENSSH
        bin_path = None
      return Environment(suite, bin_path)
  • かなりなダクトテープなパッチです。現状有姿無保証です、念のため。
  • gcloud components update すると上書きされて元に戻っちゃいます。戻ったらまた書き換えてしまえ。

VS Code Remote SSH で Gcloud console に接続する

sshクライアントが OpenSSH になったので、-W オプションを使えるようになります。

Host gcloud
    User matobaa
    ProxyCommand "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\bin\gcloud.cmd" cloud-shell ssh --ssh-flag="-W localhost:22"
    IdentityFile "C:\Users\matob\.ssh\google_compute_engine"

Windows Terminal で Google Cloud Shell を開く

"C:\Users\matob\AppData\Local\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json"
の List [] の中に以下のように追加すると、Windows Terminal のタブの選択肢に登場します。

{
  "commandline": "\"C:\\Program Files (x86)\\Google\\Cloud SDK\\google-cloud-sdk\\bin\\gcloud.cmd\" cloud-shell ssh",
  "hidden": false,
  "name": "Google cloud shell"
}

関連記事

https://zenn.dev/maotobaa/articles/e351423762adaf

GitHubで編集を提案

Discussion