【问题标题】:openssh cannot create directory /home/local/<my username>/.sshopenssh 无法创建目录 /home/local/<我的用户名>/.ssh
【发布时间】:2021-02-03 15:29:36
【问题描述】:

当我尝试 ssh [IP] 时,openssh 警告 Could not create directory '/home/local/[my username]/.ssh'

我确实有一个.ssh 目录,在另一个路径中,在我的实际主目录中,/home/[myusername]/.ssh

为什么 openssh 会在该主路径中添加 local?这条路不存在。我在 Ubuntu 16.04 上,我的 $HOME 设置正确,即 /home/[my username]

我找不到将 openssh 配置为什至查找该“本地”路径的位置。我在/etc/ssh/ 下搜索了local,但没有返回任何内容。

更新:

getent passwd $USER 显示错误的主路径,路径中包含“本地”。显然 openssh 使用主路径作为该命令的输出,而不是 $HOME 环境变量来查找主目录。我不能只编辑/etc/passwd,因为 $USER 来自 LDAP。不确定我的 IT 部门是否可以在 LDAP 中编辑我的主路径,有没有办法告诉 openssh 使用哪个主路径,即 $HOME 不是 getent passwd $USER

【问题讨论】:

  • 如果getent passwd $USER 显示您的主目录不存在,则您的系统配置有问题。您需要与系统管理员讨论如何修复它,方法是修复 LDAP 数据,或者创建 /home/local/username 作为指向实际主目录的符号链接。 ssh 假设系统的用户信息正确是合理的;如果它没有查看$HOME,则可能没有解决方法。此外,这不是一个真正的编程问题。 Server Fault 可能会更好。
  • 我联系了我的 IT 部门。他们更新了我在 LDAP 中的主目录,在我的本地机器重新启动后,openssh 可以工作了。
  • @mipnw 干得好。我已经编辑了答案以说明 LDAP 管理的 SSH 访问。

标签: ubuntu ssh openssh


【解决方案1】:

显然 openssh 使用主路径作为该命令的输出

我经常使用openssh 并将HOME 设置为与默认文件夹不同的文件夹,并且它可以正常工作。
检查您的其他环境变量,看看其中一个是否有其他提及错误路径的地方。

作为 OP cmets,问题在于 LDAP 管理帐户。

您确实可以将 ssh 密钥存储在 LDAP 中,这允许从您登录的任何服务器进行 SSH 连接(因为您的密钥是从 LDAP 获取的)

LDAP 架构示例:

/usr/local/lib/ldap/schema/openssh-ltk.ldif:

    dn: cn=openssh-lpk,cn=schema,cn=config
    objectClass: olcSchemaConfig
    cn: openssh-lpk
    olcAttributeTypes: ( 1.3.6.1.4.1.24552.500.1.1.1.13 NAME 'sshPublicKey'
        DESC 'MANDATORY: OpenSSH Public key'
        EQUALITY octetStringMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 )
    olcObjectClasses: ( 1.3.6.1.4.1.24552.500.1.1.2.0 NAME 'ldapPublicKey' SUP top AUXILIARY
        DESC 'MANDATORY: OpenSSH LPK objectclass'
        MAY ( sshPublicKey $ uid )
    )

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-16
    • 1970-01-01
    • 2021-09-02
    • 2019-06-17
    • 2023-03-07
    • 1970-01-01
    相关资源
    最近更新 更多