使用时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。
正常登录到你的虚拟机并使用命令找出它的外部 IP
$ curl ifconfig.co
(我建议您不要使用外部 IP,因为它是动态 IP,并且会在某个时间点发生变化,而且,只有通过启用 ssh 端口允许 GCP 实例通过外部 IP 登录时,您才可以使用它)
您还可以在 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 :)