我正在寻找方法来减轻在运行 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
例如)
您还可以使用sftp
或scp
命令自动化该过程,只要您可以从一台计算机访问另一台计算机,并且还知道源文件位于文件系统上的位置。
参考:
https://www.ibm.com/support/pages/using-sftp-script-rsa-authentication
https://docs.oracle.com/cd/E36784_01/html/E36870/sftp-1.html