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

ccc*_*ccc 5 linux key-authentication home

我目前必须与用户 FOO 进行 ssh,然后对用户 BAR 进行 sudo。

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

/home 目录是空的,所以似乎没有为任何用户创建主目录,而且我在该系统上没有 root。

谢谢。

ton*_*ioc 9

假设您的用户名是testssh

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

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

  • 该用户不太可能具有执行此操作的权限。如果他们有更高的权限,那么他们可以给自己一个主目录,不是吗? (2认同)
  • 但问题明确指出该用户没有 root 访问权限。 (2认同)

iga*_*gal 1

简答

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


更长的答案

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

$ echo $HOME
/path/to/nonstandard/homedirectory
Run Code Online (Sandbox Code Playgroud)

或使用getent命令:

$ getent passwd username
username:*:1001:1001:User Name:/path/to/nonstandard/homedirectory:/bin/bash
Run Code Online (Sandbox Code Playgroud)

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

假设您使用OpenSSH ,则可以通过配置文件中的关键字authorized_keys指定文件的位置。请参阅文档以获取更多信息:AuthorizedKeysFilesshd_config

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

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