我对在计算机上创建 SFTP 服务器这一主题还不熟悉。我希望能够通过 SFTP 从另一台计算机或手机访问我的 Windows XP 计算机上的文件夹。
以下是我目前所做的工作:
我已经安装了 SSH Windows,并且一切都设置正确,因为我可以通过 WinSCP 访问它(我电脑上的文件夹)。
但我无法通过手机访问它。它没有连接。
手机可以与 Windows XP 计算机位于同一无线网络中,但我希望能够在不在同一网络时访问它。
现在,根据我所读和所理解的内容,以下是连接所需的信息:
1)主机名:这是我的计算机的 IP 地址,我可以通过 在 cmd 提示符中输入 ipconfig 来访问它(我可以轻松地在计算机上访问它,因为我只需输入 localhost 或 127.0.0.1)
2)端口号:那将是端口 22(我也在端口转发部分将其添加到我的路由器)。
3) 用户名:这是我的 Windows XP 用户名。但这是我的全名,包括中间名首字母和句号。我想知道这是否会导致从手机访问时出现问题,因为名称中有空格和标点符号(句号)。
4)密码:我的 Windows XP 计算机的密码
额外信息:当我说手机时,我指的是 Android 手机,我正在使用 ftp / sftp 应用程序通过手机的蜂窝网络访问我的电脑(我也尝试过无线,但效果不好)。我尝试了多个程序。在一个程序上它告诉我连接超时,在另一个程序上它告诉我“超时:套接字未建立”
另外,我知道我可以使用 noip 网站,但我更喜欢先通过这种方式连接。另外,因为我是新手,所以我想了解一下 noip 到底在做什么,以及当我的文件从手机传输到电脑时他们是否会看到它们。
提前感谢您的帮助。
更新 1:感谢到目前为止的回复。问题似乎是我无法打开端口 22。我可以打开端口 21(我刚刚在 Belkin 路由器界面的虚拟服务器部分添加了该端口),但只有在使用我安装的名为 PFPortChecker 的程序时,该端口才会显示为打开。如果我访问网站 canyouseeme.org,它会告诉我由于连接超时,无法看到该端口。在同一个网站上,我收到端口 22 的相同错误消息。使用端口检查程序,它只是简单地告诉我该端口未打开或无法访问。
更新2:
- 简洁版本:我可以连接!一切正常。
- 较长的版本:我终于可以连接了。这是我犯的一个愚蠢的错误。在我的 Belkin 界面中,指定要打开的端口,在“启用”标题下的一列中有一个复选框。出于某种原因,我没有选中它,但对端口 21 选中了。我认为我几年前创建的两个条目也未选中,因为我希望它们存在但没有启用,这可能会让我在视觉上感到困惑。
最终解决的新问题:
然而,过了一会儿,我突然无法再连接了。我最终能够再次连接,但后来又无法连接了。在这期间,我用手机向电脑传输文件。根据上述软件和上述网站以及http://www.yougetsignal.com/tools/open-ports/这似乎更准确。软件程序和这些网站正在使用我的外部/公共 IP 地址检查端口是否打开。端口 21(我也打开了它以查看是否会遇到任何问题)有时也会显示为关闭,有时则显示为打开。
然后我创建了一个静态 IP 地址。我以为我已经有一个了,但事实并非如此。然而,我电脑上的 IP 地址(内部 IP 地址)从未改变,但为了排除这个问题,我继续创建了静态 IP 地址。然而,我仍然无法连接。
最后,原来是我的 Windows 防火墙。我认为不是这个,因为即使我禁用了它,在 user235252 的建议下,我能够再次连接,而且当我启用它时仍然成功。然而,我最终再次断开连接,无法再次连接,因为我的手机再次传输文件。
我决定将端口 22 添加到例外列表中,瞧,我已经能够成功连接并重新连接至少 24 小时。
当我无线连接到与计算机相同的网络时,我使用我的内部 ip 地址,并且可以连接到我的计算机。当我关闭无线并使用手机网络时,我使用我的外部/公共 ip,并且可以连接到我的计算机。
我很高兴能够连接。这很酷,这是我第一次做这样的事情。然而,我还有很多东西要学,尤其是安全方面,其中之一就是限制对我电脑上其他文件夹的访问。我也希望有一天能创建一种允许托管网站的服务器。
感谢大家的帮助。
答案1
1)主机名:这是我的计算机的 IP 地址,我可以通过 在 cmd 提示符中输入 ipconfig 来访问它(我可以轻松地在计算机上访问它,因为我只需输入 localhost 或 127.0.0.1)
不,要通过蜂窝网络访问,您需要公有 IP地址(如果有的话)。有些网站会告诉你这个信息(例如,如果我没记错的话,whatismyip.com)。
但即使这样也还不够;这很可能是您的家用路由器的 IP 地址,您的内部网络通过该路由器伪装并连接到互联网。
您的电脑将有一个内部的地址,例如 192.168.1.5 或类似的地址。
所以你需要还告诉您的路由器,每当有指向公共地址上的端口 22/tcp (ssh) 的连接请求进入时,该请求将被路由到与您的 XP 计算机相对应的内部地址。此功能在路由器上通常称为“虚拟服务器”或“反向端口映射”。
当手机和电脑都连接到同一个无线接入点时,它们处于同一个网络中,并且它们的地址有点“相互公开”,事情变得更容易、更快。
举个(可能过于简单)的例子,这有点像在同一家酒店内打电话——你不需要国家和地区代码,只要有房间号就行。但如果你想从酒店外给同一个房间打电话,你不能简单地拨打“42”——你需要酒店的公共电话号码,和必须指示接待处的人将电话转接到适当的房间,否则电话将无法接通。
在一些设置,你的电脑可以暴露在互联网上,并拥有自己的公共 IP 地址(你会看到它ipconfig
),但这种情况并不常见(部分原因是可用 IP 地址稀缺,但主要是因为风险。你真的不希望世界上的每个人都能随时直接连接到您的 PC,即使 PC 装有防火墙)。
通常,127.0.0.1(localhost)是机器可以与之通信的地址本身。因此其他人无法使用它(如果我尝试从我的PC,它也会连接到本身,不是你)。
第二个 IP 地址用于连接到本地网络,通常类似于 192.168.xy (我目前有 192.168.0.7)。这是“房间号”——很多电脑都有相同的地址,但它们位于不同的酒店(网络)中,无法相互通信。当您的手机连接到 WiFi 时,您需要使用这种地址。最后,我的 ISP 为我提供了一个公共地址(例如 151.38.90.44),并且那一个地址允许人们联系我,其他任何人(同时)都不允许拥有该地址。您将拥有自己的地址,如果您关闭路由器电源,该地址可能会发生变化,并且该地址是从“外部”使用的。
答案2
首先,尝试在无线情况下通过 IP 连接。真正重要的是使用计算机的内部地址,可能是 192.168。。地址。您可以使用ipconfig
命令行获取地址。获取 IP 的其他方法详见这个问题。
如果成功,那么您可以尝试从网络外部访问它。要做到这一点,您需要使用外部 IP 和转发端口,您需要将外部 IP 的连接指向内部 IP。我还建议使用非标准外部端口,这样对开放端口 22 的随机扫描就不会连接到您的系统。
另一个建议是让您的计算机拥有一个恒定的 IP 地址 - 我倾向于让我的路由器通过 MAC 地址静态分配。
请注意,noip.com 不解决上述任何问题。它唯一能帮到您的是,您不必使用外部 IP 地址,而是可以使用与其关联的名称(例如,您可以连接到 yourname.no-ip.org,而不是 169.254.123.45)。您仍然需要启用端口转发。它唯一能做的就是为您的系统创建一个 DNS 条目,除了最初查找将请求定向到何处之外,没有任何流量会通过他们的服务器。您使用 SFTP 这一事实也会加密流量,从而最大限度地降低风险。
更新:从您的更新中无法确定您使用的是内部 IP 还是外部 IP。如果您使用的是外部 IP,则您的 ISP 可能会阻止 1024 以下的端口。这就是我提到使用非标准端口并将其转发到内联网上的端口 22 的原因。尝试从 1024 到 65535 之间的某个端口转发,然后内部转发到端口 22。
答案3
转到控制面板并禁用防火墙。从外部 IP 尝试,如果有效,您可以为您设置的端口添加例外。