我有一台翻新的 HP Proliant DL380 G7,用于我一直在进行的一个小项目(这是我第一次使用服务器并进行设置)。但在我在上面设置了 Ubuntu 20.04 之后,我做的第一件事就是检查 SSH 是否正常工作。我进入配置并更改了端口,转发了我正在使用的端口。我在系统内外 ping 了多个端口和 IP,它们都在发送数据包,但仍然有 100% 的数据包丢失(我确实关闭了ufw
我正在使用的端口的防火墙)。所以有可能是路由器导致了这种情况,所以我检查了所有的设置,看看是否有某种防火墙阻止了我的 SSH 请求,我检查了所有设置,但没有成功。这就是我来到这里的原因。询问是否有什么东西可以阻止我的请求因路由器或互联网服务而无法通过。以下是我已经尝试过的事情的列表(用一些额外的内容缩短了我已经说过的内容):
- 通过配置更改 SSH 端口。
- 既触发端口,又使用虚拟服务器进行转发。
- 我将我的服务器 IP 放在地址保留上以使其成为静态的。
- 禁用防火墙以使其停止工作。
- 在我的计算机上尝试了多个应用程序,包括:MobaXterm、PuTTY 和 Windows Terminal Preview,上面有 Ubuntu 20.04 的副本,因此我可以将它用作 Ubuntu 终端来通过 SSH 进行通信。
- 我的计算机和服务器都通过以太网插入。
- 在服务器上卸载 SSH,然后手动重新安装。
我尝试过使用端口或互联网连接的不同方法,但都没有效果,其中包括:
- FTP
- Mumble 服务器
- Minecraft 服务器
我只是想问一下是否有某种互联网法规阻止了来自我的服务器、端口的流量,或者您是否可以给我一些下一步该怎么做的建议,那就太好了。
抱歉,我无法给出我使用过的任何具体命令。每当我尝试通过 SSH 连接到我的服务器时,它都会显示:权限被拒绝。当我使用 iptable 命令时,sudo iptables -S
我得到:
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
我也试过
sudo losf -nP -iTCP -sTCP:LISTEN | grep 24
并得到:
SSHD 905 root 3u IPv4 507 0t0 TCP *:24 (LISTEN)
SSHD 905 root 4u IPv4 509 0t0 TCP *:24 (LISTEN)
答案1
每次我看到 ssh 的问题时,我都会在描述中更改端口。接下来是我的标准粘贴回复。
现在我再次看到了使用该端口的隐蔽安全性。如果这台机器在本地网络之外,尝试这种端口移动技术来确保安全性是无用的。扫描互联网以寻找开放端口的机器并不关心您是否更改了端口。它们会检查每个 IP 上存在的每个端口,只有上帝知道它们一天要检查多少次。它们会毫不费力地找到您的服务及其更改的监听端口。或者您认为它们不知道这些服务可以在其他端口上运行?它们就是这么愚蠢,对吧。我粘贴的简介就是针对这种情况。
最后一个回答说“但是我们看到这样做的尝试更少”,我说我修改了声明,只有一些不那么愚蠢的人,但我坚持它。默认配置就可以正常工作。执行完成的 failtoban 并保持无密码登录设置启用并打开,只允许密钥,它们将不会进入您的机器,除非您以某种方式泄露了使用的密钥。简而言之,解决方案是让它不管它并允许它按预期运行。
答案2
确保为 SSH 提供了正确的端口 - 您表明您更改了 SSH 端口,因此您需要告诉 SSH 要使用的端口。
在 Ubuntu 中,您需要告诉 SSH 客户端端口,ssh -p PORT user@remoteip
然后它将连接到您指定的端口(替换PORT
为实际端口)。
如何在其他 SSH 客户端上执行此操作有点超出范围 - 但请确保您使用正确的帖子。
答案3
为了使 SSH 正常工作,您至少需要设置一些东西,然后此配置会根据您要执行的操作而发生变化。
现在让我们假设所有事情,您在自己的内部网络上,并且保留所有值的默认值,直到我们知道这有效。然后我们将继续进行高级配置。
目前,不需要端口转发,这是最后一步。现在我们只需要知道服务是否已启用、远程计算机的 IP 是什么、ssh-server 守护进程在哪个端口上监听,以及远程防火墙是否阻止了传入的 SSH 请求。
步骤 1 - 安装并启用 openSSH-server 服务(在远程机器上)
第 2 步 - 禁用防火墙(在远程计算机上)
如果您不能 100% 确定是否禁用了远程防火墙,请执行以下操作:
sudo service ufw status
您将在那里看到它的状态,当它处于活动状态时,让我们暂时禁用它。
sudo service ufw disable
如果您刚刚安装了 openssh-server 并且没有更改配置,则默认端口设置为 22。如果您已将 SSH 配置更改为监听另一个端口,则需要重新启动 ssh-server 服务。生成的 SSH 进程仍缓存在内存中,并且只有在生成新的 SSH-server 守护进程时才会开始在不同端口上提供服务。
因此,请执行以下操作:
sudo service ssh restart
现在转到客户端 PC。对远程机器执行 ping 操作。这是基本连接的第一步,但 ping 不适合用于测试协议或服务问题。它们存在于不同的 OSI 层。现在打开您的 ssh 客户端,可以是 putty 或其他东西,或者只是 Linux 中的终端窗口也可以。
完成上述步骤后,应该可以成功连接,如果不行,请重复前面的步骤或提出更多问题。
如果您保留默认设置,并且它正常工作,那么现在是时候切换 ssh 端口了(如果需要)。例如,假设您在远程计算机上的 ssh-server 配置中将端口从 22 更改为 2200,下一步就是在远程计算机上启用防火墙,但这次要添加一些规则。加载规则并启用防火墙后,请重新启动 ufw 服务和 ssh 服务,然后尝试连接。
如果你将 SSH 端口从 22 更改为 2200,则必须
ALLOW a rule for TCP rule for PORT 2200 from ANY adress
它将自动为 ipv6 添加相同的规则。
如果您愿意暂时关闭远程机器上的 UFW,那也是可以的。
现在 SSH 已在您的本地网络上运行,您可以开始配置远程访问。每个路由器的配置都不同,但过程大致相同。
在调制解调器/路由器的菜单中找到端口转发类别,通常在防火墙/互联网或 IP 配置下。找到端口转发后,您要做的就是转发外部端口(可以是任何端口,取决于个人偏好和安全性),例如随机端口 8422。这将是我们在外面时连接的远程端口。我们将此端口转发到我们在机器上设置的内部端口 2200。
因此,我们现在不再使用内部 IP 和端口,而是使用外部 IP 地址和外部端口。现在已将其配置为直接隧道连接到内部网络上的 2200 端口,并且应该可以访问。如果最后一步出现问题,请完全重新启动调制解调器/路由器和远程服务器。如果这仍然不起作用,但内部 ssh 起作用,则可以肯定配置尚不正确。权限被拒绝错误听起来就像您试图在错误的端口上访问 SSH。因此您可以访问该机器,但请求的 SSH 端口不提供该端口,因此权限被拒绝。
希望这有帮助。
答案4
我的一根以太网电缆没有被服务器注册,因此我更换了以太网电缆,然后我意识到我的 Windows 计算机没有连接到 LAN,尽管它已插入正确的路由器。所以我使用了一台笔记本电脑,它让我毫无问题地连接到服务器。感谢您试图帮助我!