我的 Ubuntu 机器出现了一个有趣的问题,我觉得这可能只是我的配置问题,但希望你们中的一位向导可以帮助我解决这个问题。
我安装了 Ubuntu 18.04.4,用于我和朋友的视频游戏服务器。目前,我在其上运行着 Minecraft 和 Terraria。这些服务器在各自的用户下运行(我有一个 Minecraft 用户和一个 Terraria 用户),以保持独立。此外,我还有一个特权用户,他可以使用 sudo 访问几乎所有内容。
正如标题所示,我在服务器上设置了基于密钥的身份验证。我按照 YouTube 视频的说明进行设置,该视频指导我在主用户的主目录中创建一个“.ssh”目录,并使用它来存储授权密钥。.ssh 文件夹具有 700 个权限,其余文件为 600 个权限。完成所有这些操作后,一切顺利!成功了!
因此,如果我打开 putty 并 ssh 进入我的服务器,只要我选择特权用户作为我希望登录的用户,它就可以正常工作。如果我尝试以 Minecraft 或 Terraria 用户身份登录,则不行,服务器会拒绝密钥。我尝试为 Minecraft 用户创建相同的 .ssh/authorized_keys 文件夹来测试我需要拥有公钥的理论还在 Minecraft 用户的主目录中才能工作。仍然没有成功。(这是我的问题,下面的答案解决了这个问题。这个文件中的关键不是一行)事实上,对于其他任何一个用户来说,实际上都没有一个典型的主目录。
特权用户在 /home/USER/ 中有一个主文件夹,但其他用户没有,我觉得这可能是我的问题的根源,但我不确定如何为我的用户创建这个目录而不破坏在其上运行的服务器的安装。
这就是我在这里要做的事情,如果你们当中有人知道为什么我的 ssh 无法为那些用户工作,我很乐意听听。提前谢谢!
答案1
通过输入 查看当前用户cat /etc/passwd
。每行的参数用冒号分隔:倒数第二个参数是用户主目录。最后一个参数是用户 shell(如果用户已配置为不允许登录,则可能是nologin
或 之类的内容)。false
您可以通过添加用户useradd
和usermod
修改用户。请查看这些命令的手册页。
有时,安装程序运行时可能会添加用户,但该用户不打算用于登录(例如出于安全原因),因此您可能需要修改主目录或 shell,或者只是添加其他不同的用户以允许远程登录。这取决于您想要做什么或您想要授予哪些用户或访问权限。
您尝试执行的操作应该可以工作,因此密钥文件可能有问题,或者文件所有权权限可能有问题。
检查源机器上的单行id_rsa.pub
是否在目标机器~/.ssh/authorized_keys
文件中。仔细检查,如果您剪切/粘贴此行,它是否粘贴为多行。它是一行。
检查目标用户(您的 Minecraft 或 Terraria 用户)是否有权访问 .ssh 目录和 authorized_keys 文件。
如果这不起作用,您是否已确认您可以在没有authorized_keys的情况下远程登录这些用户?例如通过提供密码?