我想从我的办公室电脑下载文件到我的笔记本电脑。
我可以通过SSH将我的办公机器连接到组织服务器,然后将SSH从服务器连接到我的办公机器。
组织服务器接受的唯一命令是ssh、ssh1和ssh2。
如何通过服务器从办公室(远程)机器下载文件到我的笔记本(本地)计算机?
发布于 2019-08-26 00:21:54
前面的回答提到了如何使用ProxyJump指令(在OpenSSH 7.3中添加)通过中间服务器(通常称为堡垒主机)进行连接,但只将其作为命令行参数。
除非它是一台将来不会连接的机器,最好的做法是在~/.ssh/config上配置它。
我会放一个文件,比如:
Host office-machine
Hostname yochay-machine.internal.company.local
ProxyJump bastion-machine
Host bastion-machine
Hostname organization-server.company.com
...如果您使用的是不支持OpenSSH的早期版本的ProxyJump,则可以将其替换为等效的:
ProxyCommand ssh -W %h:%p bastion-machine如果本地ssh版本是一个不支持-W的非常古老的版本,那么:
ssh bastion-machine nc %h %p虽然最后一种方法需要安装堡垒机器,但它需要安装nc。
ssh的优点是您可以在文件上配置每个目的地,并且它们会很好地堆叠。因此,您将在所有工具(ssh、scp、sftp.)上使用office-machine作为主机名。因为它们是直接连接的,因此他们将研究如何在ssh_config中进行连接。您还可以使用通配符(如Host *.internal.company.local )使所有主机都通过特定的堡垒结束,并且它将适用于所有这些主机。一旦正确配置,执行一个跃点连接或20个连接的唯一区别将是连接时间较慢。
发布于 2019-08-25 12:55:17
如果本地有一个最近的OpenSSH (8.0),可以使用-J(跳跃)开关:
scp -J user@intermediate user@target:/path对于旧版本(但至少7.3),可以在命令行中使用ProxyJump指令:
scp -o ProxyJump=user@intermediate user@target:/path或者在ssh_config文件中,正如@ngel的回答所示。
还有其他选项,如ProxyCommand或端口转发,您可以在更旧版本的OpenSSH上使用这些选项。这些都包含在OpenSSH支持多跳登录吗?中。
发布于 2019-08-25 13:33:32
使用ProxyJump配置:
ProxyJump 将一个或多个跳转代理指定为用户@主机*港口或ssh URI。多个代理可以用逗号字符分隔,并将按顺序访问。设置此选项将导致ssh(1)连接到目标主机,首先将ssh(1)连接到指定的ProxyJump主机,然后从那里建立TCP转发到最终目标。
scp -o ProxyJump=user@intermediate user@target:/pathhttps://unix.stackexchange.com/questions/537319
复制相似问题