我正在尝试将公钥添加到服务器,但我不想重新启动 sshd 服务才能使其生效。原因是重新启动 ssh 服务似乎会对当时可以使用 ssh 服务的其他用户造成干扰。大多数文档建议添加公钥,$HOME/.ssh/authorized_keys
然后重新启动sshd
服务 ( systemctl restart sshd
)。感兴趣的操作系统是Linux。
我的问题是:
- 是否需要重启
sshd
? - 如果
sshd
重启的话,当时是否有服务中断? - 有没有办法使用 ssh 设置无密码身份验证,而无需
sshd
在添加新公钥后重新启动服务$HOME/.ssh/authorized_keys
?
答案1
是否需要重启sshd?
通常不会。 Linux 发行版通常附带允许公钥身份验证的默认配置,因此您通常无需编辑配置即可使能够它,因此无需重新启动。即使您必须对 执行某些操作sshd_config
,您也只需在编辑该文件后重新启动一次,而不是在每次编辑授权密钥文件后都重新启动它。
请注意,您甚至不必重新启动 sshd。从man sshd
:
当 sshd 收到挂断信号 SIGHUP 时,它会通过使用启动时的名称和选项执行自身来重新读取其配置文件,例如
/usr/sbin/sshd
。
sshd 的典型 systemd 服务可以识别这一点,因此您可以这样做systemctl reload sshd
。
如果重启sshd,当时服务是否中断?
取决于您对服务中断的定义。简单地重新启动 sshd 不会终止现有的 ssh 连接,但在 sshd 完成重新启动之前不会接受新连接。
答案2
最好的方法是使用
ssh-copyid [email protected]
其中 N 是 IP 地址
或者
ssh-copyid user@fqdn
其中 fqdn 是完全限定域名(例如 server.domain.com)
这不需要重新启动任何守护进程
答案3
就我而言,我需要将密钥添加到 ssh 代理:
ssh-add ~/.ssh/id_rsa