我的公寓里运行着一个小型 SBC,我用它来从位于其他地方的云进行备份。每天晚上,我的云都会通过 SFTP 连接到我的 SBC,为我的数据创建新的备份时间戳。
由于这意味着我需要向互联网公开 SSH 端口,因此我希望 SSH 配置非常安全。它将只允许一个特定用户登录,只允许基于证书的登录等等。我还将更改端口,这样我就不必将端口 22 请求从 Internet 转发到我的家庭网络。
但是,当我在家时,我希望能够使用不同的帐户(能够使用 sudo)和使用常规端口 22 的密码通过 SSH 登录我的 SBC。我希望仅允许从私有 IP 地址块中的非常具体的 IP 地址 (192.168.1.10)。如果我需要从其他地方访问我的 SBC,我可以使用 VPN 登录到我的路由器,然后它会为我分配家庭网络内正确的本地 IP 地址以连接到我的 SBC。
现在,我知道如何在 sshd_config 中配置这些内容,但我不知道如何将这些不同的策略应用于特定端口。我知道我可以使用 Host 指令,但据我所知,这只影响主机名,而不影响端口。
答案1
您似乎正在寻找Match
指令,用于有条件地应用配置项。例如,您可以添加到您的sshd_config
:
Match LocalPort=22 Address="192.168.1.*"
PasswordAuthentication yes
AllowUsers username
允许密码身份验证并允许(仅)username
在连接到端口时登录22
和来自 IP 匹配的主机192.168.1.*
图案。
请注意,此示例假设您的默认配置更具限制性,即默认情况下您不允许username
登录并且不允许密码身份验证。
此类条件块应添加在配置文件的底部,因为块仅由后续指令或文件末尾Match
结束。Match
此外,顺序也很重要:为配置参数找到(并匹配)的第一个指令就是所使用的指令。