如果远程系统上没有主目录,我可以通过公钥进行 ssh 吗?

如果远程系统上没有主目录,我可以通过公钥进行 ssh 吗?

我目前必须使用用户 FOO 进行 ssh,然后使用 sudo 操作到用户 BAR。

我想使用公钥进行 ssh,但在远程系统上没有用户 FOO 的主目录,因此显然没有 .ssh/authorized_keys。我可以把我的公钥放在哪里?

/home 目录是空的,因此似乎没有为任何用户创建主目录,并且我在该系统上没有 root 权限。

谢谢。

答案1

假设您的用户名是testssh

  • 创建/etc/ssh/authorized_keys_testssh并把你的密钥放在那里
  • 添加以下内容/etc/ssh/sshd_config
Match User testssh
    AuthorizedKeysFile  /etc/ssh/authorized_keys_%u

并重新启动 sshd。您的用户将能够使用他的私钥进行 ssh。

答案2

简答

您可能无法 - 请与您的系统管理员联系。


更长的答案

首先,/home目录为空(即使它不存在)这一事实并不一定意味着您的用户没有主目录。您可以尝试查看环境变量的值HOME

$ echo $HOME
/path/to/nonstandard/homedirectory

或使用getent命令:

$ getent passwd username
username:*:1001:1001:User Name:/path/to/nonstandard/homedirectory:/bin/bash

如果事实证明您的用户确实没有主目录,那么如果您的服务器管理员为您的authorized_keys文件设置了非标准位置,那么仍然可以使用公钥。

假设你正在使用开放SSH,文件的位置authorized_keys可以通过配置文件AuthorizedKeysFile中的关键字来指定sshd_config。请参阅文档以获取更多信息:

默认值为~/.ssh/authorized_keys。您必须查看设置/etc/ssh/sshd_config以查看默认值是否被覆盖。由于您没有 root 访问权限,如果您想进行任何更改,您可能必须向系统管理员寻求帮助。

如果事实证明您没有主目录,系统管理员没有为您的authorized_keys文件配置不同的位置,并且您没有计算机的管理权限,那么您可能无法使用基于密钥的身份验证 - 与您的系统管理员联系。

相关内容