openssh无法创建目录/ home / local / <我的用户名> /ssh

问题描述

当我尝试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甚至寻找该“本地”路径。我为local下的/etc/ssh/做了一个重复,但未返回任何内容

更新

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

解决方法

显然,openssh使用该命令输出的本地路径

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

OP评论中,问题出在管理帐户的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 )
    )