SFTP 到谷歌计算引擎

Posted

技术标签:

【中文标题】SFTP 到谷歌计算引擎【英文标题】:SFTP into Google Compute Engine 【发布时间】:2014-04-05 10:49:23 【问题描述】:

我一直在 Compute Engine 上使用 Debian,想知道如何通过 SFTP 进入服务器。我找不到任何文档,希望有人能指出我正确的方向。

谢谢!

如果这不可能,是通过 SCP 管理静态站点的最佳方式吗?

【问题讨论】:

【参考方案1】:

FileZilla 免费版和 FileZilla Pro 都能够连接到 Debian 的 Google Cloud VM 实例。 PuTTY,另一个需要的程序,也是免费的。 1. 下载 PuTTY 生成 SSH 密钥。我无法使用 gcommand 生成的密钥(谷歌云连接)连接到实例。必须使用 PuTTY 密钥才能连接 FileZilla。 一种。启动 PuTTYgen 湾。点击“生成” C。不要保存公钥。它使密钥无效。而是从窗口中复制它。 d。将其粘贴到文本编辑器中并将其另存为 KEYNAME.pub e.在 PuTTY 中单击“转换 > 导出 OpenSSH 密钥”并使用扩展名“.ppk”保存 F。不要关闭 PuTTY。你马上就会需要它。 2. 在 Google Console 中编辑您的 Compute Engine 实例。 * 通过从文本编辑器粘贴来添加公共 SSH 密钥 (KEYNAME.pub)。 3. 启动 FileZilla,然后启动其他需要的程序(此处描述) 一种。转到“编辑 > 设置” 湾。从左侧菜单中选择“SFTP”。 C. 在右侧,单击“添加密钥文件...”(导航到您保存的 ppk 私钥。) d。点击确定 e.在工具栏中的“主机”字段中输入“sftp://123.456.789.012”(带有您实例的外部 IP 地址)。 F。在 PuTTY 中复制“关键评论”字段。 G。在 FileZilla 工具栏中,输入从 PuTTY 复制的“关键注释”到 FileZilla 字段“用户名”中。 H。在 FileZilla 工具栏上单击“快速连接”。 一世。在 FileZilla 右窗格的“远程站点”上,滚动到目录树的顶部并单击加号 (+),然后再次单击加号 (+)。这会加载整个操作系统的目录结构。 j.向下滚动到最后一个目录“var”并单击它,然后展开其加号 (+)。 ķ。目录“www”将弹出。单击它,然后单击它的加号将其展开。 l.目录“html”弹出。点击它。离开 FileZilla(不关闭它)并转到“Google Cloud SDK > Google Cloud SDK Shell”。保持打开状态。 米。转到 Google Cloud 控制台并列出您的 Compute Engine 实例。在实例右侧,单击“SSH”下拉菜单并选择“查看 gcloud 命令”。复制命令。 n.将该命令粘贴到“Google Cloud SDK Shell”中。这将启动 PuTTY 终端并为您提供 Linux 系统的命令提示符。 ○。键入命令“sudo chmod -v 777 /var/www/*”(最后是一个星号。) 页。返回 FileZilla 并将您的 Web 文件拖到右侧窗格的“html”目录中。您可能必须单击工具栏上的“断开连接”才能使用新权限写入该目录。 (它是带有红色“X”的计算机图标。)然后再次单击“快速连接”并像以前一样列出目录。 问。上传完文件后,转到 PuTTY(或粘贴 gcommand 字符串时打开的任何终端)并输入以下命令:“sudo chmod -v 755 /var/www/*”以重置“www " 目录。 砰!你完成了。 使用 FileZilla,您可以操作整个 Linux 系统的文件。我只是将它用于 web 目录。

【讨论】:

【参考方案2】:

您可以使用gcloud compute scp上传和下载文件,例如,上传方式:

gcloud compute scp \
     ~/local-dir/file-1 \
     my-instance:~/remote-destination \
     --zone us-central1-a

并通过以下方式下载:

gcloud compute scp \
     my-instance:~/file-1 \
     my-instance:~/file-2 \
     ~/local-dir \
     --zone us-central1-a

gcloud 工具包含在Google Cloud SDK 中,并预装在标准 Google Compute Engine VM 映像中。

【讨论】:

【参考方案3】:

我放弃了 gcloud 计算副本文件,因为我无法弄清楚为什么我的实例没有被获取并且权限不足,然后我开始研究如何 sftp 进入我的 gcloud 实例

这就是我使用 filezilla 的方法

    首先我下载并运行了 gcloud sdk:https://cloud.google.com/compute/docs/gcloud-compute/#install

    当我第一次尝试从终端连接到实例时,系统提示我创建 ssh 密钥,我在 Mac 上,因此密钥设置在 .ssh/ 文件夹下的 /Users// 文件夹中

    我从 .ssh/ 文件夹中获得了 google_compute_engine 私钥并将其导入到 filezilla > settings > sftp

    主机是我的 gcloud vm 实例的 ip 地址,用户是你的用户名,一旦你通过 ssh 连接到实例。检查提示:[@]$,你的密钥应该是你的方法的认证。你的远程目录和/home//一样,服务器类型是unix(我在google cloud有centos vm)

一旦我的文件从我的计算机上传到我的实例上的目录中,我就可以将它们 mv 到我需要这些文件位于 gcloud vm 实例中的任何位置。

我又是一个快乐的露营者。

来源:http://winscp.net/eng/docs/guide_google_compute_engine

【讨论】:

我已经通过 filezila sftp 连接到我的计算引擎实例,但是当我尝试上传任何文件时,我收到了这个错误:Command: put "/Users/abdul/signUpPage.html" "signUpPage.html" Error: /opt/bitnami/apache2/htdocs/BRWebApp/signUpPage.html: open for write: permission denied Error: File transfer failed 嗨,我安装了 gcloud sdk,但不确定如何“尝试连接”以获得 ssh 密钥提示。那是你运行的命令行吗?我运行 gcloud init,它引导我完成身份验证并连接到我的实例,但没有新密钥,也不知道从那里去哪里【参考方案4】:

概括地说,这些是步骤:

    安装并运行 gcloud SDK ($ gcloud init) 生成 SSH 密钥 ($ gcloud compute ssh) 设置 FTP 客户端(安装并添加密钥文件) 使用 SFTP 客户端连接到 VM

假设在 Google 提供此 documentation 之前已在此处提出此问题。

另外,我已经记录了这个,它可能会有所帮助:

https://www.youtube.com/watch?v=9ssfE6ODpak

仅供参考 .. 如果您需要传输的文件非常小,那么您可能不需要 SFTP 客户端。直接从控制台传输,如此处所示https://youtu.be/HEdXEEYOynE

【讨论】:

在第 2 步。我收到此错误:(gcloud.compute.ssh) 参数 [USER@]INSTANCE: 必须指定。【参考方案5】:

在 Mac 或 linux 操作系统上,使用“gcloud compute config-ssh: 命令。这将在您的 .ssh 目录中设置 conf 文件,并允许您使用 ssh、scp 和 sftp 使用在配置文件。

用于 config-ssh 的 gcloud 文档 https://cloud.google.com/sdk/gcloud/reference/compute/config-ssh

【讨论】:

【参考方案6】:

好像google计算机引擎默认已经有SFTP服务了。以下是使用 WinSCP 作为 SFTP 客户端连接到服务的出色分步说明。第一次尝试它对我来说非常适合。

http://winscp.net/eng/docs/guide_google_compute_engine

同样的原则应该适用于其他 FTP 客户端软件。希望能节省一些人的时间和精力。

【讨论】:

【参考方案7】:

如果我理解这个问题,您希望在 Debian 的实例中使用 SFTP。

    试试this tutorial

    在防火墙中打开22端口:

    gcutil addfirewall port-22 --description="Open up port 22." --allowed="tcp:22"

    使用 Filezilla 客户端建立 SFTP 连接进行测试。

玩得开心:)

【讨论】:

【参考方案8】:

如果您指定实例的 IP 地址,ssh、scp 和 sftp 应该都可以工作。如果您有静态 IP 地址,则可以为此使用 DNS,也可以使用来自gcutil listinstances 或控制台的 IP 地址。

知道实例的 IP 地址后,您还需要 ssh 私钥,通常位于 ~/.ssh/google_compute_engine。然后你可以通过sftp 连接如下:

sftp -o IdentityFile ~/.ssh/google_compute_engine user@host

【讨论】:

您是否在代码中缺少=?我收到运行您的线路sftp -o IdentityFile~/.ssh/google_compute_engine user@123.123 的错误消息? * 错误的配置选项* 我在运行代码时收到一条错误消息Permission denied (publickey)(使用 =)。似乎比指出钥匙还需要更多?谢谢!

以上是关于SFTP 到谷歌计算引擎的主要内容,如果未能解决你的问题,请参考以下文章

谷歌计算引擎和谷歌容器引擎有啥区别?

如何使用谷歌应用引擎将 php 项目部署到谷歌云中?

将应用程序(春季启动)部署到谷歌应用引擎时,不使用哪个 sql db?

在将应用程序(spring boot)部署到谷歌应用程序引擎时,没有使用sql db?

如果我将 Spring Boot 应用程序部署到谷歌云,我应该使用应用引擎还是计算引擎 [重复]

谷歌应用引擎 GQL,如何以毫秒精度使用日期时间进行分页