开机自启动sshd导致系统无法启动问题

1.buildroot方式制作文件系统,并启动虚拟机:
qemu-system-aarch64 -machine virt -nographic -cpu cortex-a57 -smp 2 -hda /home/daniel/Downloads/linux/rootfs_debian_arm64.ext4 -kernel /home/daniel/Downloads/linux/arch/arm64/boot/Image -append console=ttyAMA0 root=/dev/vda earlyprintk=serial slub_debug=UZ -m 2014 -netdev user,id=user0 -device virtio-net-device,netdev=user0

2.系统启动会阻塞

通过注释启动脚本的方式定位/etc/init.d/S50ssh内的命令# /usr/sbin/sshd 会一直阻塞;

3.查看源码:sshd.c
int main(){
...
seed_rng(); //需要产生随机数
...
}

[root@myvm test]# cat /proc/sys/kernel/random/poolsize
4096
[root@myvm test]# cat /proc/sys/kernel/random/entropy_avail
0
/proc/sys/kernel/random/poolsize,说明熵池的大小(以位为单位)。
例如:在停止抽水之前我们应该储存多少随机果汁。
/proc/sys/kernel/random/entropy_avail 是当前池中随机果汁的数量(以位为单位)。

4.消耗掉熵池的实验:
[root@myvm test]# cat /dev/random > /dev/null & 
[1] 19058
[root@myvm test]# cat /proc/sys/kernel/random/entropy_avail
0
 

5.产生熵的方法:Haveged 
Haveged 是一个守护进程,它使用处理器的“抖动”将熵添加到系统熵池中。

下载haveged-1.9.1.tar.gz然后移植到文件系统,解决因开机启动sshd导致系统无法启动的问题。

6.再次执行sshd
# /usr/sbin/sshd 
[   79.906345] NET: Registered protocol family 10
[   80.059676] Segment Routing with IPv6
Could not load host key: /etc/ssh/ssh_host_rsa_key
Could not load host key: /etc/ssh/ssh_host_ecdsa_key
Could not load host key: /etc/ssh/ssh_host_ed25519_key
sshd: no hostkeys available -- exiting.

生成rsa,ecdsa,ed25519三种类型的秘钥:
# ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
# ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key
# ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key


7.附:注意秘钥文件权限过大有可能导致启动失败,本实验未遇到(修复方法:chmod 600 /etc/ssh/ssh_host_*_key)

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
您好!对于SSH服务启动失败导致系统宕机的情况,我可以提供一些常见的解决方法,请您参考以下步骤: 1. 检查错误日志:登录到系统中,查看/var/log/auth.log或/var/log/secure文件,查找与SSH服务相关的错误信息。这些日志文件将记录SSH服务是否启动失败以及可能的原因。 2. 检查配置文件:验证/etc/ssh/sshd_config文件中的配置是否正确。确保端口号、密钥路径和访问策略等设置无误。您可以使用文本编辑器打开该文件并进行检查。 3. 检查SSH密钥:确认SSH密钥文件是否存在且可访问。默认情况下,私钥文件为/etc/ssh/ssh_host_rsa_key,公钥文件为/etc/ssh/ssh_host_rsa_key.pub。确保这些文件的权限设置正确,并且它们未被意外更改或删除。 4. 停止并重新启动SSH服务:尝试通过以下命令停止和重新启动SSH服务: ``` sudo service ssh stop sudo service ssh start ``` 5. 检查端口监听:使用以下命令检查系统上是否已经有进程在监听SSH端口(默认为22): ``` sudo netstat -tuln | grep 22 ``` 6. 更新和重装OpenSSH软件包:尝试更新和重新安装OpenSSH软件包,确保您使用的是最新版本并且没有损坏的文件。 ``` sudo apt update sudo apt install --reinstall openssh-server ``` 如果您仍然遇到问题,建议提供更多详细的错误信息以便更好地帮助您解决问题。请注意,此处提供的是一些常见的解决方法,具体解决方案可能因系统环境而异。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

danielliu861

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值