我没有使用 22 端口来连接 SSH,而是在 47000 以上的某个端口上
安装了 ufw(简易防火墙),并且解除了对“ssh”和“http”的阻止。
当我查看当前的 ufw 状态时,他表示端口 22 和端口 80 允许从任何地方访问。我通过 SSH 配置了此东西
我的 SSH 连接没有被它中断。尽管我没有使用端口 22 进行 SSH。但我也为 47000+ 解锁了那个特殊端口。现在我在 IPv4 和 IPv6 上都打开了两个端口
我是否需要同时解锁两者?我可以删除端口 22 吗?如果我的 SSH 连接崩溃了,我就不会问这个问题,但现在我很困惑 SSH 端口到底使用了什么
47000+ 端口是否仅用于握手?
抱歉,我问了这个问题(几乎不相关),但我担心如果防火墙配置错误,我可能永远无法再通过 SSH 连接到我的服务器
答案1
我是否需要将两者全部解锁?
不。
我可以删除端口 22 吗?
是的。
如果我的 SSH 连接崩溃了,我就不会问这个问题了,但现在我很困惑 SSH 端口到底用在什么地方
通常,您现有的连接不会受到影响。我们必须查看您生成的 iptables 规则集才能确定,但您现有的/相关的 tcp 连接应该会绕过关闭端口检查。您可以通过尝试建立新的 ssh 会话来验证(如 @Joes 的评论所述)。
47000+端口仅用于握手吗?
否。该端口将用于所有 SSH 流量。
答案2
为了使 SSH 正常工作,您至少需要设置一些东西,然后此配置会根据您要执行的操作而发生变化。
现在让我们假设所有事情,您在自己的内部网络上,并且保留所有值的默认值,直到我们知道这有效。然后我们将继续进行高级配置。
目前,不需要端口转发,这是最后一步。现在我们只需要知道服务是否已启用、远程计算机的 IP 是什么、ssh-server 守护进程在哪个端口上监听,以及远程防火墙是否阻止了传入的 SSH 请求。
步骤 1 - 安装并启用 openSSH-server 服务(在远程机器上)
第 2 步 - 禁用防火墙(在远程计算机上)
如果您不能 100% 确定是否禁用了远程防火墙,请执行以下操作:
sudo 服务 ufw 状态
您将在那里看到它的状态,当它处于活动状态时,让我们暂时禁用它。
sudo 服务 ufw 禁用
如果您刚刚安装了 openssh-server 并且没有更改配置,则默认端口设置为 22。如果您已将 SSH 配置更改为监听另一个端口,则需要重新启动 ssh-server 服务。生成的 SSH 进程仍缓存在内存中,并且只有在生成新的 SSH-server 守护进程时才会开始在不同端口上提供服务。
因此,请执行以下操作:
sudo 服务 ssh 重启
现在转到客户端 PC。对远程机器执行 ping 操作。这是基本连接的第一步,但 ping 不适合用于测试协议或服务问题。它们存在于不同的 OSI 层。现在打开您的 ssh 客户端,可以是 putty 或其他东西,或者只是 Linux 中的终端窗口也可以。
完成上述步骤后,应该可以成功连接,如果不行,请重复前面的步骤或提出更多问题。
如果您保留默认设置,并且它正常工作,那么现在是时候切换 ssh 端口了(如果需要)。例如,假设您在远程计算机上的 ssh-server 配置中将端口从 22 更改为 2200,下一步就是在远程计算机上启用防火墙,但这次要添加一些规则。加载规则并启用防火墙后,请重新启动 ufw 服务和 ssh 服务,然后尝试连接。
如果你将 SSH 端口从 22 更改为 2200,则必须
允许来自任何地址的端口 2200 的 TCP 规则
它将自动为 ipv6 添加相同的规则。
如果您愿意暂时关闭远程机器上的 UFW,那也是可以的。
现在 SSH 已在您的本地网络上运行,您可以开始配置远程访问。每个路由器的配置都不同,但过程大致相同。
在调制解调器/路由器的菜单中找到端口转发类别,通常在防火墙/互联网或 IP 配置下。找到端口转发后,您要做的就是转发外部端口(可以是任何端口,取决于个人偏好和安全性),例如随机端口 8422。这将是我们在外面时连接的远程端口。我们将此端口转发到我们在机器上设置的内部端口 2200。
因此,我们现在不再使用内部 IP 和端口,而是使用外部 IP 地址和外部端口。现在已将其配置为直接隧道连接到内部网络上的 2200 端口,并且应该可以访问。如果最后一步出现问题,请完全重新启动调制解调器/路由器和远程服务器。如果这仍然不起作用,但内部 ssh 起作用,则可以肯定配置尚不正确。权限被拒绝错误听起来就像您试图在错误的端口上访问 SSH。因此您可以访问该机器,但请求的 SSH 端口不提供该端口,因此权限被拒绝。
希望这有帮助。