我在星巴克使用两台笔记本电脑(OS X 和 Windows 10),想在不使用 USB 闪存驱动器的情况下将文件从一台传输到另一台。这是一个大文件,所以我不想通过互联网发送,而是想使用本地网络。如何通过 LAN 设置 SSH?这可以在星巴克等公共网络上实现吗?还是我需要在路由器级别控制端口转发等?
我在 Cygwin 中的目标主机上设置了一个 ssh 服务器,并可以通过 成功连接到该服务器ssh -v localhost
。我也可以使用 进行连接(使用我在 Cygwin 上使用 ipconfig 找到的本地 IP 并读取标题为“IPv4 地址”的行)。但是,当我从 MacBook 客户端尝试使用相同的 SSH 命令尝试连接到 Windows 主机时,它因超时而失败。ssh -v [email protected]
答案1
使用类似 SSH 技术传输文件的简单方法可能是使用 OpenSSH 自带的 scp 命令。
scp [email protected]:/file .
如果您想尝试 GUI,WinSCP.net 非常适合 Windows。您可以让它连接到 127.0.0.1 以查看出现的文件名。
听起来好像某个系统可能不接受 TCP 端口 22 上的流量。这可能是由于缺少 SSH 服务器,也可能是由于类似防火墙的技术阻止了流量。我建议使用“netstat -na”(应该适用于 Unix 系统,我理解 Mac OS X 是这样的……也适用于 Microsoft Windows)来确认您是否正在监听 TCP 端口 22(以及监听哪个地址)。否则,您可以运行 sshd 来启动 SSH 服务器吗?
至于系统之间能否相互通信,则取决于设置方式。理论上,星巴克可以限制 Wi-Fi 上设备之间的通信,使此类通信无法通过星巴克网络进行。实际上,许多组织并不关心此类保护措施。我不知道星巴克最近在做什么,而且这些细节很可能会随着时间的推移而发生变化。
另一种可能是使用“Ad hoc” Wi-Fi 网络。如果您的两台计算机都可以这样做,那么您可能根本不需要使用星巴克的 Wi-Fi 设备(这意味着星巴克的 Wi-Fi 不会造成任何问题)。
关闭 Windows 防火墙(如另一个答案所建议的那样)可能会帮助 Mac 与 Windows 防火墙通信。实际上,这是一种不推荐的方法,尽管它可能有效。这种方法可能很简单,但也会导致不必要的安全风险。可以采取更好的方法,例如在 Windows 防火墙软件中简单地制定一条规则/例外,以便可以从外部流量访问 TCP 端口 22。您可能希望从可能更容易排除某些故障的环境(例如在家中,使用类似的机器,在有线网络上)测试这种连接。
我希望这能解答您的问题。您提供的一些数据有点模糊(哪个系统能够成功运行“ssh”?哪个系统有该 IP 地址?)
答案2
我建议您先关闭 Windows 10 防火墙。然后从第二台计算机 (OS X) ping Windows 10 计算机,看看是否可以访问。
如果 ping 正常,请在您的 OS X 机器上发出此命令:telnet 172.31.98.84 22
如果显示已连接,则说明您的 Windows 10 计算机正在监听 SSH 端口。现在尝试 ssh Windows 10 计算机,如果成功,则需要在再次打开 Windows 10 防火墙后允许端口 22 进行传入连接。
答案3
可以SSH
在公共局域网上进行设置 - 但在我看来,如果你不担心公共服务器的问题,这不是最安全的方法SSH
。仅供参考 - 需要注意的一些事项如下在此链接中。
根据您的描述,我假设SSH
它已在您的 Windows 机器上设置。
在 Macintosh 上,您必须确保SSH
正在运行。您可以通过以下方式检查:
ps aux | grep sshd
SSH
在您的终端上。如果守护进程已在运行,它将为您提供一些信息,如进程号、启动时间等。
如果上述命令没有显示任何内容,SSH
则很可能没有启用或运行。在 Macintosh 上,要启用SSH
:
系统偏好设置 -> 共享 -> 远程登录
应该检查。要检查 Macintosh 的 IP,请执行并从您连接到的接口 (en0/en1/..) 中ifconfig
找出地址。inet
如果上述方法失败,您可能必须在两台机器上添加静态 IP,然后尝试SSH
。
检查此链接,虽然它代表的是 Ubuntu,但同样的也适用于您的场景:
https://askubuntu.com/questions/305229/whats-the-best-way-to-ssh-to-machines-on-the-local-network
另一个需要考虑的选项是SCP
(安全复制),它用于安全地传输文件SSH
。