Cygwin中SSH不识别nsswitch.conf的db_home指定目录如何解决
Cygwin SSH读取db_home指定目录配置的操作步骤
- 第一步:完全终止所有Cygwin进程
/etc/nsswitch.conf仅会在Cygwin进程树的首个进程启动时加载一次,修改配置后必须关闭所有Cygwin终端、后台Cygwin进程,也可直接重启电脑确保无残留进程,新配置才会生效。 - 第二步:修改
/etc/profile覆盖USERPROFILE环境变量
当前配置已经正确设置了HOME变量,但Cygwin自带的SSH工具会优先读取Windows系统预设的USERPROFILE环境变量,因此需要在现有/etc/profile中HOME=$(eval echo "~$USER")行的下方新增一行配置,强制将USERPROFILE指向Cygwin家目录:export USERPROFILE="$HOME" - 第三步:修正.ssh目录的权限属性
SSH对配置文件的权限有严格要求,从Windows目录复制过来的.ssh文件夹默认权限不符合要求,会导致SSH跳过读取,执行以下命令修正权限:cd ~ chmod 700 .ssh chmod 600 .ssh/* chown -R $(id -un):$(id -gn) .ssh - 第四步:验证配置生效
重启Cygwin终端后执行echo $HOME,确认输出为/home/你的用户名而非/cygdrive/c/Users/你的用户名;执行ssh -v 目标远程地址查看调试日志,出现Reading configuration data /home/你的用户名/.ssh/config即代表配置生效。 - 可选补充配置:如果上述操作后仍不生效,可以在当前用户的shell配置文件(如
~/.bashrc、~/.zshrc)末尾追加以下两行,强制覆盖家目录相关变量:export HOME="/home/你的实际用户名" export USERPROFILE="$HOME"
内容的提问来源于stack exchange,提问作者Joe
相关产品推荐
相关产品推荐

