在我的计算机上,我使用的是使用 tun0 接口的 OpenVPN。我希望 sshd 只监听这个接口。
我知道,我可以指定要监听的 IP 地址
/etc/ssh/sshd_config
和
ListenAddress 0.0.0.0
指令。但我的 IP 地址会改变,所以我不能在这里选择一个始终有效的 IP。我知道我只能在 VPN 启动时启动守护进程 - 这不是问题。
我怎样才能让 sshd 仅在特定接口(tun0)上监听?
答案1
你不能直接这样做,因为 sshd 只理解 IP 地址。你可以使用 openvpn up 脚本来解决这个问题
-up cmd 在成功打开 TUN/TAP 设备后运行的 Shell 命令(用户 UID 更改前)。up 脚本可用于指定路由命令,该命令将发往 VPN 连接另一端的私有子网的 IP 流量路由到隧道中...
另请参阅--down
清理选项和详细说明脚本安全性等的文档的相关部分。
您会发现 tun 设备的 IP 地址作为环境变量传递给脚本。此外,sshd 在命令行上接受以下形式的选项
-oSomeOption=SomeValue
-o 选项 可用于以配置文件中使用的格式提供选项。这对于指定没有单独命令行标志的选项很有用。有关选项及其值的完整详细信息,请参阅 sshd_config(5)
所以你可以使用
-o ListenAddress=<some address>
假设您有一些带外方法与您的 VPS 通信,以便当它中断时您可以联系服务器。