介绍
SSH是可用于管理DigitalOcean Droplets的主要方法。 处理SSH错误或失败可能令人沮丧,因为错误本身通常会禁止您访问服务器。 此故障排除系列介绍了SSH可能遇到的一些最常见的问题,如何解决这些问题,何时考虑重新部署以及如何获得进一步的支持。
本教程专门介绍了解决SSH问题的两个重要先决条件:
确定故障排除是否正确决定(或迁移/重新部署是否更合适)
查看有效解决SSH问题所需的资源和技能,例如对服务器进行root访问并熟悉文件操作。
本系列的其他部分涵盖了如何识别和解决特定的SSH错误,并根据需要调试的成功SSH连接的哪个阶段进行细分。
何时考虑迁移或重新部署
在某些情况下,如意外的递归rm
或chmod
命令,SSH服务的问题无法解决。 SSH连接问题一开始就可能出现其他问题,但是在没有明确的解决方案的情况下会显示更深层次的问题。 这样的事情包括:
- 文件系统损坏
- 错误的文件系统权限和文件所有权
- 破碎的系统软件包和所需的库
要快速部署重新上线,您将需要确定尝试恢复SSH服务是否是您的问题的正确解决方案,或者您应该重新开始重新部署恢复数据 。
通常可以通过Web控制台启动输出来识别启动错误。 与文件系统相关的问题或任何防止工作控制台登录会话的启动故障都是出现SSH故障排除可能不是更好的选择。 在这样的情况下,最好的方法是尝试挽救你可以做的。 在某些情况下,良好的备份或快照策略可以允许更快恢复以前的工作环境,或者我们的负载平衡器功能可能会使新的Droplet脱机,并重新部署更快的解决方案,以使您的部署再次运行。 您也可以与我们的支持小组开一张机票,并要求恢复环境 。
故障排除之前了解的内容
如果您已经决定对您的情况进行故障排除,您需要先了解一些事情,才能进行深入了解。
查看相关的SSH设置指南
要熟悉SSH,您可以阅读如何使用SSH 连接到您的Droplet,以及如何在您的Droplet中使用SSH密钥 。 这些指南可以为您的设置过程添加一些澄清,以帮助您避免或了解某些问题。
访问Web控制台
详细故障排除文章中列出的许多步骤需要从运行的Droplet中完成。 当SSH关闭时, 如果您的Droplet正在运行,并且您具有工作root密码, 则Droplet Web控制台是获得访问权限的另一种方式。
恢复根访问
如果您没有当前的root密码,则需要恢复它。 DigitalOcean Cloud Panel教程介绍如何查找和使用“ 重置根密码”功能。 如果您使用FreeBSD,请确保遵循FreeBSD root密码恢复教程 ,因为复位过程略有不同。
使用详细的输出
默认情况下,客户端提供的关于SSH会话的详细程度通常很安静。 然而,当遇到问题时,这种相对的沉默可以隐藏对问题的洞察。
对于OpenSSH客户端,可以使用带有多个v
条目的-v
选项来增加输出的详细程度,如ssh -v user @ your_server_ip
。 虽然大多数问题将会单独使用,但有些问题可能会受益于-vvv
。
PuTTY客户端支持从应用程序窗口栏中的上下文图标访问的事件日志。 在启动连接时,还可以从设置页面配置会话记录。
管理文件和权限
其中一些解决方案可能需要您查看或编辑系统上的文件或管理权限 。
注意:在编辑任何文件之前,请确保在保存文件之前进行备份,以防需要快速恢复编辑中的任何错误。
在这些文章中,列出了当前用户主目录的引用。 对于用户名sammy ,路径~/.ssh
通常会转换为/home/ sammy /.ssh
。 根用户路径通常位于/root/
。
检查日志
进入Droplet之后,系统通常会提供可用的日志,可以更清楚地了解您可能在服务器上面临的情况。 查看日志文件以开始识别错误是一个好主意,以便您可以查找解决方案。
您可以使用此Linux日志记录教程和此journalctl和systemd日志记录教程了解有关服务器上的日志的更多信息。
结论
现在您已经决定是否应该进行故障排除,并熟悉所需的技能,您可以按照相应的教程开始解决任何SSH错误:
- SSH连接故障排除 这会处理诸如连接被拒绝或超时的错误。
- 这包括客户端突然被丢弃或关闭,客户端抱怨密码协商,或与未知或更改的远程主机的问题。
- SSH 验证故障排除 这包括密码认证或SSH密钥认证拒绝的问题。
- 解决SSH Shell环境 。 这包括无法分割进程,系统报告它不是有效的shell或到达主目录的问题。