我最近通过 openconnect 客户端建立了家庭/工作 VPN 连接(我不知道这是否重要),并且我能够登录到工作中的各个网关机器,但我无法 scp 或 rsync 到这些网关后面的任何东西。
因此,我可以执行 a ssh gateway
,然后,在我进入服务器后,我可以执行ssh work_machine
。因此,标准的交互式 ssh 可以正常工作。接下来,我尝试 scp 和 rsync 到工作机器。为了实现这一点,我在.ssh/配置:
Host work_machine
Hostname work_machine_hostname
ProxyJump gateway
User user
但是,尝试执行此操作scp /local/path/file work_machine:/remote/path
时会挂起。rsync 也会发生这种情况。
有人知道发生了什么事吗?
更新
我也尝试过隧道技术。我建了一条隧道到网关,同时保持跳转主机配置工作机器。我再次可以 ssh 进入工作机器,但我无法 scp 或 rsync 到它。
我想我会回到旧的隧道技术,直到其他实用程序赶上来。这是一个额外的脚本,用于在本地机器上设置端口,但它很可靠。
顺便说一下,Ubuntu 16.10 上的 ssh 客户端是 7.3p1。
更新2
完全移除跳跃主机并返回隧道。
所以,
ssh -f -N -L 12345:gateway1:22
ssh -f -N -L 12346:gateway2:22 gateway1
Host tgateway2
Hostname localhost
Port 12346
User user
现在最后一条隧道,
ssh -f -N -L 12347:work_machine tgateway2
和
Host twork_machine
Hostname localhost
Port 12347
User user
此设置曾经使我能够直接访问 twork_machine,即使它隐藏在两台网关机器后面。scp 和 rsync 也曾经可以工作。现在只有交互式 ssh 可以ssh twork_machine
工作,但没有 scp 和 rsync。scp 命令只是挂在步骤scp -v -t
(来自 的详细输出scp somefile twork_machine:
)
答案1
ssh/scp/rsync 方面一切正常。导致问题的是,work_machine 上的默认 csh shell 的 .login 文件设置为加载 bash(通过 bash -l)。出于某种原因,这种 shell 切换混淆了 scp 和 rsync,但不会混淆 ssh。