SSH 的 DynDNS 替代方案?

SSH 的 DynDNS 替代方案?

我有一台具有动态 IP 地址并且可通过 SSH 访问的服务器。在服务器上,只要该地址发生更改,脚本就会将包含服务器公共 IP 地址的文本文件上传到某个 Web 位置。

如何从其他客户端连接到服务器?这与 DynDNS 类似,但使用网络来获取 IP 地址。

答案1

如果您无权访问或无法使用 DynDNS 服务,请创建别名~/.ssh/config并在 IP 地址发生变化时对其进行编辑。将这两行(可选地后跟该主机别名的其他设置)放入~/.ssh/config

Host nickname
HostName 1.2.3.4
CheckHostIP no
HostKeyAlias nickname

只要地址可能发生更改,就运行此脚本。

#!/bin/sh
url='http://example.com/my-server-ip.txt'
ip_address=$(wget -q "$url")
case $ip_address in
  '') :;; # empty file or connection error
  *[!.:0-9A-Fa-f]*) # bad character
    echo 1>&2 "The content at $url doesn't look like an IP address!"; exit 1;;
  *) # this looks like an IP address
    ed -s ~/.ssh/config <<EOF
/^ *Host  *nickname
/^ *HostName 
s/e .*/e $ip_address/
w
q
EOF
esac

答案2

您可以使用该nsupdate命令对远程服务器进行动态 DNS 更新。我假设(但不清楚)您正在将 DynDNS 提供的(免费)商业服务与“其他服务”进行比较。事实证明,“动态DNS”实际上是一个用于更新记录的标准化协议。您不需要移动其中包含记录的 .txt 文件(尽管这也可以)。您可以改为使用nsupdate更新活动区域中的条目。

答案3

为什么不简单地使用该 IP 更新您的 DNS 条目呢?

我正在这样做使用ssh-dyndns。请参阅我的博客条目中的描述

相关内容