说目标机器是user@B.com
并且唯一登录的地方是user@A.com
(通常称为跳机)
,我如何使用
我尝试过的scp命令将本地文件复制到机器B但没有任何反应,它只告诉我某种操作超时scp files user@B.com
2 回答
我不确定这是不是最好的解决方案,但是您可以使用 ssh 中包含的 tcp 端口转发功能。
首先要确保跳机有 Tcp Forwarding enable 查看 sshd_config 文件,通常位于目录 "/etc/ssh/" 中。检查您是否有条目:
AllowTcpForwarding 否
默认情况下 TcpForwarding 是启用的,所以如果它没有禁用它应该没问题。
您将在跳转机上建立一个连接,并在您的系统上本地创建一个端口 fording 端口以直接与系统 B 通信
在您的工作站上运行的 ssh 命令将是:
ssh -L 2222:server_B:22 server_A
从 ssh 手册页:
-L [bind_address:]port:host:hostport
指定将本地(客户端)主机上的给定端口转发到远程端的给定主机和端口。这通过分配一个套接字来侦听本地端的端口来工作,可选地绑定到指定的 bind_address。每当与此端口建立连接时,都会通过安全通道转发连接,并从远程计算机建立与主机端口 hostport 的连接
因此,要将文件从您的工作站发送到服务器 B :
scp -P 2222 Your_file 127.0.0.1:/PATH_ON_SERVER_B
祝你今天过得愉快。
这就是你要找的:
scp -J user@targetMachineA ./local_file_or_directory user@targetmachineB:/path/where/to/copy/
来自 scp 手册页:
-J destination 通过首先与destination 描述的跳转主机建立scp 连接,然后从那里建立到最终目标的TCP 转发来连接到目标主机。可以指定多个跳转跃点,用逗号分隔。这是指定 ProxyJump 配置指令的快捷方式。此选项直接传递给 ssh(1)。