实验室服务器docker里面ssh连不上,start-stop-daemon: matching on world-writable pidfile /run/sshd.pid is insecure

文章讲述了在Docker容器中配置并启动SSH服务时遇到的权限问题,包括错误提示和解决步骤,如修改`/run/sshd.pid`和SSH主机密钥权限。
部署运行你感兴趣的模型镜像

容器内提前安装了ssh

进入容器之后启动ssh

报错。说什么不安全(我不管,我就要连接,xkl还要跑深度学习,说如果我成功了,每天给我买一杯库迪咖啡)

注意修改权限的操作要在容器内,要是在ubuntu里面改错了权限,可能后果很严重

(base) dell@dell-Precision-7920-Tower:~$ docker attach xkl
root@fba4c66f7f2c:/# service ssh start
 * Starting OpenBSD Secure Shell server sshd                                                                              start-stop-daemon: matching on world-writable pidfile /run/sshd.pid is insecure
[fail]
root@fba4c66f7f2c:/# chmod 600 /run/sshd.pid
root@fba4c66f7f2c:/# service ssh start
 * Starting OpenBSD Secure Shell server sshd                                                                              
 /  run/sshd must be owned by root and not group or world-writable.
[fail]
root@fba4c66f7f2c:/# rm -rf /var/run/sshd/
root@fba4c66f7f2c:/# service ssh restart
 * Restarting OpenBSD Secure Shell server sshd                                                                     [ OK ] 
root@fba4c66f7f2c:/# 

如果出现了下面的情况

 

(同样是在容器内。)就这样

root@7a034721befb:/#  chmod 600 /etc/ssh/ssh_host_ecdsa_key 
root@7a034721befb:/# chmod 600 /etc/ssh/ssh_host_ed25519_key 
root@7a034721befb:/# chmod 600 /etc/ssh/ssh_host_rsa_key 

 

 

您可能感兴趣的与本文相关的镜像

TensorFlow-v2.9

TensorFlow-v2.9

TensorFlow

TensorFlow 是由Google Brain 团队开发的开源机器学习框架,广泛应用于深度学习研究和生产环境。 它提供了一个灵活的平台,用于构建和训练各种机器学习模型

<think>好的,我现在需要帮助用户解决他们在停止Docker服务时遇到的错误。用户提供的错误信息是: Stopping Docker: dockerstart-stop-daemon: warning: failed to kill 5495: No such process No process in pidfile '/var/run/docker-ssd.pid' found running; none killed 首先,我需要理解这个错误的含义。看起来用户在尝试停止Docker服务时,系统报告无法终止进程ID为5495的进程,并且在指定的PID文件中没有找到正在运行的进程。这可能意味着Docker服务已经停止,或者PID文件没有被正确更新。 接下来,我应该考虑可能的原因和解决方法。可能的原因包括: 1. **Docker服务未运行**:当用户尝试停止服务时,服务可能已经停止,所以没有进程可以终止。 2. **PID文件残留**:之前的PID文件(/var/run/docker-ssd.pid)可能残留,导致系统误认为有进程在运行。 3. **权限问题**:用户可能没有足够的权限来终止进程或访问PID文件。 4. **Docker守护进程异常退出**:守护进程可能异常终止,导致PID文件没有被正确清除。 针对这些可能的原因,我需要提供相应的解决步骤: 1. **检查Docker服务状态**:使用systemctl status docker查看服务是否正在运行。 2. **手动删除PID文件**:如果确认服务已停止,可以手动删除残留的PID文件。 3. **重启Docker服务**:有时候重启服务可以解决PID文件的问题。 4. **检查权限**:确保用户有足够的权限来操作Docker服务和相关文件。 5. **查看日志**:通过journalctl -u docker.service查看日志,寻找更多线索。 另外,用户可能是在使用旧版本的Docker,或者系统初始化系统有问题(比如从SysVinit迁移到systemd但配置未更新)。需要提醒用户检查Docker的安装和配置是否正确。 最后,我需要确保提供的解决方案清晰、分步骤,并且涵盖常见情况,同时给出验证步骤,如检查服务状态和日志,以确认问题是否解决。还要注意安全建议,比如避免直接编辑系统文件,除非必要,并且提醒用户谨慎操作,以免造成系统不稳定。</think>### ✅ 错误原因及解决方案 #### **1. Docker 服务未实际运行** 系统尝试根据 PID 文件 `/var/run/docker-ssd.pid` 终止 Docker 进程,但该进程(ID 5495)已不存在。 **解决方法**: ```bash # 手动删除残留的 PID 文件 sudo rm -f /var/run/docker-ssd.pid # 重启 Docker 服务(自动重建 PID 文件) sudo systemctl restart docker ``` --- #### **2. PID 文件与实际进程不匹配** 可能因异常关机或服务崩溃导致 PID 文件残留。 **验证步骤**: ```bash # 检查当前运行的 Docker 进程 ps aux | grep docker # 如果无输出,说明服务已停止 ``` --- #### **3. 使用 systemd 管理服务(推荐方式)** > **⚠️ 注意**: > 如果使用 `systemctl` 管理 Docker,应直接通过 `systemctl` 控制服务,而非 `docker start/stop` 命令。 **正确操作**: ```bash # 停止 Docker 服务 sudo systemctl stop docker # 启动 Docker 服务 sudo systemctl start docker # 重启 Docker 服务 sudo systemctl restart docker ``` --- #### **4. 强制清理残留进程(极端情况)** ```bash # 查找所有 Docker 相关进程 pgrep -f docker # 如果存在异常进程,手动终止 sudo kill -9 <PID> # 删除 PID 文件并重启服务 sudo rm -f /var/run/docker-ssd.pid sudo systemctl restart docker ``` --- ### 🔄 验证修复 ```bash # 检查 Docker 服务状态 sudo systemctl status docker # 查看 Docker 日志(排查深层问题) journalctl -u docker.service --since "1 hour ago" ``` --- ### ⚠️ 常见误区 1. **混用 SysVinit 和 systemd**: 如果系统使用 `systemd`,应避免直接调用 `docker start/stop`。 2. **PID 文件权限问题**: 确保 `/var/run/docker-ssd.pid` 的权限为 `root:docker`,且可读写。 3. **未等待服务完全停止**: 停止服务后需等待几秒再操作,避免残留进程干扰。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值