防止 gcloud 使用 Putty(Windows 上的 google cloud sdk)

防止 gcloud 使用 Putty(Windows 上的 google cloud sdk)

使用时google-cloud-sdk对于 Windows, gcloud compute ssh将启动内置油灰. 是否可以为gcloud compute ssh命令指定不同的默认 ssh 客户端?

答案1

Windows 版 Cloud SDK 的最新版本附带了预先打包的 putty 可执行文件(dir/bin/sdk 文件夹)。通过查看 gcloud 的源代码,似乎 PuTTY 的使用是硬编码的,目前无法选择其他 SSH 客户端。

答案2

您可以使用 MobaXterm、Windows 终端或任何其他支持 ssh 的命令提示符应用程序登录 GCP VM。您只需要私钥内部/外部 IP您的 GCP 实例(又名 GCP VM)。

私钥通常C:\Users\<username>\.ssh\google_compute_engine

如果找不到该文件,您可以通过试运行 gcloud login 命令来了解其路径。

$ gcloud compute ssh example-instance --zone=us-east1-b --dry-run

(--zone 标志是可选的。)

从输出中,您会注意到命令中使用的私钥将以.ppk扩展名结尾(ppk代表 putty-private-key)。

如果你在同一个路径下浏览文件资源管理器,你会发现另一个没有.ppk扩展名的文件,那就是标准格式的私钥。

现在您需要实例的外部/内部 IP(如果您使用 VPN,则可以使用内部 IP)。

您可以使用两种方法找出您的虚拟机的外部 IP。

  1. 正常登录到你的虚拟机并使用命令找出它的外部 IP

    $ curl ifconfig.co

(我建议您不要使用外部 IP,因为它是动态 IP,并且会在某个时间点发生变化,而且,只有通过启用 ssh 端口允许 GCP 实例通过外部 IP 登录时,您才可以使用它)

  1. 您还可以在 GCP 控制台中找到内部/外部 IP(只有您拥有管理员权限才有可能)。

    • 链接到显示此点的图像

一旦您获得了虚拟机的内部或外部 IP,您可以运行以下命令从您最喜欢的 shell 登录。

$ ssh -i <path to private key without the (.ppk) extension> user@your_instance_IP

答案3

您可以创建一个新命令并将其保存在您的 Microsoft.PowerShell_profile.ps1 中:

function g-ml-vm
{
    # get default command as string(--dry-run)
    $SrcCommand = (gcloud beta compute ssh username@ml-ubuntu-18 --dry-run `
        --zone "your-zone" --project "your-project-id") | Out-String

    # remove path to putty.exe
    $PuttyExe = "putty.exe"
    $SrcCommand = $SrcCommand.SubString($SrcCommand.IndexOf($PuttyExe) + $PuttyExe.length)

    # use ssh, remove .ppk file extension from the key name
    $NewCommand = "ssh" + $SrcCommand.Replace(".ppk", "")

    # run
    iex $NewCommand
}

您只需更改此函数的第一个命令。替换用户名@ml-ubuntu-18你的区域你的项目 ID与您的价值观。

要使用新的配置文件脚本,请重新启动终端或运行. $profile。之后,您可以使用此命令。

这样,我无需离开我喜欢的 Windows 终端窗口就可以连接到 gcloud VM :)

相关内容