问题描述
当我尝试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 )
)