ssh/authorized_keys 在“from”指令中包含主机名

ssh/authorized_keys 在“from”指令中包含主机名

我正在配置 sshd 以允许我启动需要使用 root 帐户完成并远程启动的备份,因此我尝试尽可能地锁定它。

我已启用仅使用公钥和强制命令的 root 登录。root authorized_keys 文件包含公钥、备份命令和允许的 IP 列表。我可以添加UseDNS到 sshd 配置以启用主机名查找,但这似乎是在对连接 IP 发出反向查找以匹配主机名,而不是查询允许的主机名以匹配 IP。结果是我的 IP 解析为我的 ISP 发布的通用主机名,而不是我使用 IP 不断更新的主机名。有没有办法使用我的 FQDN,还是我只需要坚持使用 IP?

在 /etc/sshd_config 中:

PermitRootLogin forced-commands-only
PubkeyAuthentication yes
PasswordAuthentication no 
ChallengeResponseAuthentication no
UsePAM yes
UseDNS yes
X11Forwarding yes
PrintMotd no
AcceptEnv LANG LC_*
Subsystem       sftp    /usr/lib/openssh/sftp-server
AddressFamily inet

/root/.ssh/authorized_keys:

from="dynamic.example.com",command="/backup_script.sh" ssh-rsa AAABEQ9c42....

/var/log/auth.log:

Authentication tried for root with correct key but not 
from a permitted host (host=ip68-9-123-123.ri.ri.cox.net, ip=68.9.123.123).
# nslookup dynamic.example.com
Server:         127.0.0.1
Address:        127.0.0.1#53

Non-authoritative answer:
Name:   dynamic.example.com
Address: 68.9.123.123

UseDNS在这个不太有用的消息中没有使用结果:

/var/log/auth.log:

Authentication tried for root with correct key but not 
from a permitted host (host=68.9.123.123, ip=68.9.123.123).

我想我可以让authorized_keys文件保持最新,但使用FQDN会更好。

答案1

重要的是要知道,UseDNS您的 sshd_config 上的设置必须设置为yes,否则服务器不会费心检查反向。默认值似乎是“否”,因此您最终会得到如下结果:

host sshd[875076]: /home/user/.ssh/authorized_keys:5: Authentication tried for user with correct key but not from a permitted host (host=x.x.x.x, ip=x.x.x.x, required=FQDN).

一旦您设置UseDNS yessshd_config,不要忘记重新启动 sshd。

答案2

如果您想在文件中使用 fqdn authorized_keys,则需要确保源 ip 地址反向解析为所需的主机名。当 sshd 从其他地方收到连接时,它拥有的唯一信息是 ip 地址;它只能通过执行反向 DNS 查询来找出主机名。

由于您使用的是动态主机名,因此几乎可以保证您连接的 IP 地址永远不会解析为所需的名称。相反,正如您所看到的,该地址将解析为特定于该地址的某种静态名称。

最好的办法是 (a) 只使用 IP 地址并想出一些机制来保持其最新状态,或者 (b) 不要依赖有关原始地址的信息作为身份验证的一部分。相反,使用特定用途的 ssh 密钥或其他解决方案。

相关内容