我正在运行一个使用具有端口转发功能的 VPN 的服务器。该 IP 只能通过端口“12345”访问外部互联网。因此,当我想连接到服务器时,我必须通过“111.111.111.111:12345”或“example.com:12345”来访问它。
我想知道是否可以设置 URL 转发(重定向)或 DNS 类型记录,在其中可以将域设置为“ssh.example.com”,以便我可以使用它来 ssh 进入服务器。
我想运行命令:
ssh [email protected]
答案1
你可以使用SSH 配置文件进行~/.ssh/config
设置:
Host ssh.example.com
Hostname 111.111.111.111
Port 12345
这样,您应该能够使用它来连接您的服务器。ssh [email protected]
您甚至可以添加更多 SSH 选项,例如 ,这样User
您就不需要再键入它了。
如果您确实想使用 DNS 执行此操作,可以将此行添加到您的/etc/hosts
文件中:
111.111.111.111 ssh.example.com
你的 SSH 命令将是ssh -p 12345 [email protected]
答案2
简单的答案是“不”。至少不适合每个客户。 SSH 没有像 HTTP 那样的转发机制。 DNS 域名使用 A 或 AAAA 记录,有 IP 但没有端口号。 ssh 客户端只需要端口 22。
DNS 确实有专为此类目的而设计的 SRV 记录,并且还包含端口号,但许多客户端根本不检查它们。
在将来的某个时刻,所有 SSH 客户端实际上可能会检查并使用 SRV 记录,但在我撰写本文时,我相信 Linux 上的 OpenSSH 和 Windows 上的 Putty 不会。有一些模糊的报道称 OSX/MacOS 可能支持此功能,但我无法确认(https://serverfault.com/q/1004793/94158)。
不过简短的版本是,如果您没有连接到端口 22,那么您在连接时必须显式提供该端口。
你可以将 ssh 客户端配置为通过 ssh 配置自动执行此操作 正如其他答案所暗示的那样。
答案3
不可以,但作为解决方法,我们可以使用 DNS SRV 记录来指定 SSH 端口。不幸的是,任何 SSH 客户端都不支持这一点,但存在一些解决方法: https://serverfault.com/questions/960733/dns-record-for-ssh-docker
答案4
(这是一个老问题,但 Serverfault 今天将其放回首页/此处的答案似乎没有解决该问题)。
我想知道是否可以设置 URL 转发(重定向)或 DNS 类型记录,在其中可以将域设置为“ssh.example.com”,以便我可以使用它来 ssh 进入服务器。
撇开你试图用实现它的机制(不存在)来描述你想要实现的目标......
您似乎正在尝试使用“example.com”作为网关设备来访问另一台计算机“ssh.example.com”。您正在谈论的特定端口意味着“example.com”不能充当 IP 路由器。如果是这样,那么只需将 example.com:12345 代理到 ssh.example.com:22 就可以解决问题的连接部分,但这仅适用于位于 example.com 后面的单个地址/端口。
有多种代理协议被设计用于适应这种多路复用,包括 SOCK 和 HTTP。这些需要在 example.com 上部署适当的服务器并侦听端口 12345。但是(在没有任何上下文来指导实现选择的情况下)我将使用 ssh 服务器并中继 ssh 连接(这也允许端口转发和其他技巧)例如将其添加到 ssh_config 中,您可以ssh [email protected]
Host example.com
Port 12345
User jumpuser
Host ssh.example.com
ProxyCommand ssh -q -W %h:%p example.com
OTOH 如果 example.com 上有 HTTP 代理......
Host ssh.example.com
ProxyCommand corkscrew example.com 12345 %h %p
DNS 不提供任何机制来解决路由/代理/隧道问题。