macOS 端口转发用于远程 ssh 登录

macOS 端口转发用于远程 ssh 登录

我想从我的网络外部使用 22 以外的端口通过远程 ssh 登录到我的 LAN 上的服务器 (macOS Sierra)。(我听到使用默认端口以外的其他端口可以提高安全性。这是真的吗?

我已经成功配置了我的路由器(思科 RV325,它有一个固定的 WAN IP 地址,比如 99.99.99.99),这样我就可以远程登录到服务器(在静态 LAN IP 地址 12.0.0.123)的端口 22 上,如下所示:

$ ssh [email protected] -p 22 

这很好用。我现在想通过另一个端口(比如说 60022)登录,如下所示:

$ ssh [email protected] -p 60022 

我不明白如何将流量从端口 60022 转发到 22。我应该在路由器还是在本地服务器中执行此操作?路由器的“端口范围转发表”配置确实允许将给定端口范围的数据包转发到特定 IP,但它似乎不允许我从一个端口转换到另一个端口。

如果这应该发生在服务器上,我不明白该怎么做。我如何让 macOS 开始监听端口 60022?

我尝试过,但没有成功这些 Ubuntu 说明到 Mac。我尝试使用pfctl以下方法设置转发:

$ echo "
rdr pass inet proto tcp from any to any port 60022 -> 127.0.0.1 port 22
pass in proto tcp from any to any port 60022
" | sudo pfctl -f -
pfctl: Use of -f option, could result in flushing of rules
present in the main ruleset added by the system at startup.
See /etc/pf.conf for further details.

No ALTQ support in kernel
ALTQ related functions disabled
$

这似乎没有打开端口 60022,因为 (1) 当我这样做时端口没有显示出来sudo lsof -i -P | grep LISTEN,并且 (2) 当我坐在服务器并尝试登录时连接被拒绝:

$ ssh [email protected] -p 60022 -v
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /Users/USERNAME/.ssh/config
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: /etc/ssh_config line 102: Applying options for *
debug1: Connecting to 127.0.0.1 [127.0.0.1] port 60022.
debug1: connect to address 127.0.0.1 port 60022: Connection refused
ssh: connect to host 127.0.0.1 port 60022: Connection refused
$ 

而在端口 22 上登录则正常:

$ ssh [email protected] -p 22 -v
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /Users/USERNAME/.ssh/config
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: /etc/ssh_config line 102: Applying options for *
debug1: Connecting to 127.0.0.1 [127.0.0.1] port 22.
debug1: Connection established.
...
Password:
$

总之:

  1. 如何告诉 macOS 开始监听端口 60022?
  2. 我如何告诉 macOS 将端口 60022 转换为 22?
  3. 有没有关于如何做到这一点的好的介绍/教程?
  4. 我是否应该尝试转发到 60022(例如),或者使用默认端口 22 是否足够安全?

答案1

正如@yoonix 所建议的,您可以完全在路由器中实现预期目标,而无需修改服务器(macOS 或其他)。总结问题 1 和 2(甚至帖子的标题)可能有点误导。至于总结问题 4,请参阅@Gordon Davisson 的评论。

为了实现该目标,请按如下方式设置路由器:

  1. 使用浏览器登录RV325配置页面。选择“设置”>“端口地址转换”。
  2. 在“端口地址转换表”下单击“服务管理...”按钮。在弹出窗口中单击“添加”,然后输入服务名称(此端口地址转换设置的昵称),从弹出菜单中选择“TCP”,然后输入外部端口(60022)和内部端口(22)。单击“保存”,然后关闭弹出窗口。
  3. 返回“端口地址转换表”,点击“添加”。从弹出菜单中选择您的服务名称,输入转发 IP 地址(示例中为 12.0.0.123),然后选中状态框以启用它。点击“保存”。
  4. 转到“防火墙”>“访问规则”,然后单击“服务管理...”按钮。在弹出窗口中单击“添加”,然后输入服务名称(此访问规则的昵称),并输入要打开的外部端口号(或端口号范围)(本例中为 60022-60022)。单击“保存”,然后关闭弹出窗口。
  5. 最后,在“访问规则”中单击“添加”。选择“允许”和上面创建的服务名称。将“源 IP”和“目标 IP”保留为“任意”。单击“保存”。

从现在开始,路由器将负责必要的转发和端口转换,这样就可以将您直接发送到所需服务器上的登录守护程序 12.0.0.113 。ssh [email protected] -p 60022

相关内容