我尝试过的事情:
- 更改
After=network.target
为After=network-online.target
通过systemctl edit --full sshd.service
- 创建文件
/etc/systemd/system/sshd.service.d/network-online.conf
内容为
[Unit]
After=network-online.target
- 更改
After=network.target
为After=network-online.target
并添加Wants=network-online.target
通过systemctl edit --full sshd.service
每次 sshd.service 无法绑定到其 IP 地址时,第三次尝试都会有一个不同,当尝试 ssh 到 raspberry pi 时,它返回的不是通常的“连接被拒绝”,而是“kex_exchange_identification:读取:对等方重置连接”
我的目标是让我的树莓派在启动时成功启动 sshd.service。
我正在使用带有 NetworkManager 的 raspbian 12 bookworm 的 raspberry pi 1 b+。
@grawity 我希望它绑定到单独的地址,并且之前没有遇到过问题,以下是该命令的输出:
$ sudo systemctl list-dependencies --after network-online.target
network-online.target
● ├─networking.service
● ├─NetworkManager-wait-online.service
× ├─systemd-networkd-wait-online.service
● └─network.target
● ├─ifupdown-pre.service
● ├─networking.service
● ├─NetworkManager.service
● ├─systemd-networkd.service
● ├─wpa_supplicant.service
● └─network-pre.target
● └─ufw.service
@Jaromanda XI 需要能够配置 sshd_config 以进行密钥认证,我不明白为什么在启用 ssh 时应避免使用 raspi-config,但我会尝试在成像仪中启用它并重新安装,然后稍后编辑我的帖子
network-online.target 在 NetworkManager.service 完全启动之前触发,sshd.service 尝试绑定到 IP 并失败。解决方法是
systemctl edit --full sshd.service
设置以下内容:如果存在,您还需要将其删除
RestartPreventExitStatus=255
。这允许 sshd.service 在启动时不可避免地失败时重新启动,而不会重新启动得太快。