在已建立 SSH 隧道的 Bastion VM 设置中使用 SCP

在已建立 SSH 隧道的 Bastion VM 设置中使用 SCP

我正在寻找方法来减轻在运行 CentOS 8 的 GCE 虚拟机中使用 scp 命令的可能性。

当前设置是堡垒虚拟机能够通过 SSH 连接到辅助虚拟机(实例 1)。在建立第一个 SSH 连接后,我无法从辅助虚拟机 SSH 返回到堡垒虚拟机,我假设这是因为没有相反方向的 SSH 密钥对(如果我错了,有人纠正我)。运行时的错误ssh <BASTION_IP>Permission denied (publickey,gssapi-keyex,gssapi-with-mic)

我正在尝试从实例 1 到堡垒进行 SCP,但这也不起作用,错误为Permission denied (publickey,gssapi-keyex,gssapi-with-mic)。这是因为 SSH 密钥对不存在吗?

有办法解决这个问题吗?我想看看有哪些潜在方法可用于从实例 1 到堡垒运行 SCP 命令。任何形式的 TCP 转发或建立不同的 SSH 隧道是否允许文件传输出去

编辑以获取更多详细信息。

Instance-1 只有一个私有 IP。两个虚拟机都位于两个独立的 GCP 项目中,网络之间具有 VPC 对等互连。

没有 NAT 网关或其他代理允许实例 1 进行外部 Internet 访问。

Bastion 没有实例 1 中私钥的公钥

编辑其他问题。

随着堡垒建立到实例 1 的 SSH 隧道,是否可以在实例 1 中并以某种方式将文件从实例 1 获取到堡垒?

如果堡垒上的实例 1 的 SSH 密钥对没有公钥,SCP 是否无法工作?

答案1

我建议使用 sftp 命令。首先通过普通 SSH 连接到 Bastion 服务器。从 Bastion 服务器启动 SFTP 会话

$ sftp -i /PATH/TO/SSH/KEY user@remote-vm-ip

进入后,您可以使用cd命令在文件系统中移动(cd对于远程,lcd对于本地) 使用命令ls列出文件(ls对于远程,lcd对于本地) 想要下载文件,只需使用get命令(get file.txt例如) 想要上传文件,只需使用put命令(put file.txt例如)

您还可以使用sftpscp命令自动化该过程,只要您可以从一台计算机访问另一台计算机,并且还知道源文件位于文件系统上的位置。

参考:

https://www.ibm.com/support/pages/using-sftp-script-rsa-authentication

https://docs.oracle.com/cd/E36784_01/html/E36870/sftp-1.html

相关内容