【问题标题】:Could not create directory '/home/username/.ssh'无法创建目录“/home/username/.ssh”
【发布时间】:2022-04-07 18:40:59
【问题描述】:

Git 突然停止为我工作。 (我在 Windows 7 下使用 Git Bash。我没有使用 Cygwin。)

每次我尝试拉或推时它都会说:

无法创建目录'/home/sigod/.ssh'

我位于C:\Users\sigod\.sshHOME 的SSH 密钥设置为/c/Users/sigod。哪个应该根据variousSOquestions工作。

如果我将 SSH 密钥放入 C:\Program Files\Git\home\sigod\.ssh,那么 Git 会再次开始工作。但是如果没有肮脏的解决方案,我怎样才能让它工作呢?

【问题讨论】:

  • 你使用 Cygwin 吗?
  • @mauro,不,我不知道。
  • 作为临时解决方案,我为c:\Program Files\Git\home\ <<===>> c:\Users 创建了符号链接。
  • mkdir /home/sigod/.ssh 可能会有所帮助
  • 我也有同样的问题。有人有解决方案吗?

标签: windows bash git ssh


【解决方案1】:

Git Bash 是使用 MSYS2 构建的,which is a very close cousin to CygWin。以下可能只适用于您的情况,请按照下列步骤操作:

  1. 以管理员身份打开 cmd.exe,并将 HOME 系统环境变量设置为指向您的用户目录。

    setx -m HOME ^%UserProfile^%
    

    上述命令将为您的系统环境设置 HOME=%UserProfile%

  2. 打开 git bash,并确保 /etc/nsswitch.conf 文件包含未注释的 db_home 行条目。确保它与以下配置之一匹配:

    选项a:

    db_home: env windows cygwin desc
    

    选项 b:

    db_home: windows
    
  3. 在步骤 2 中尝试选项时完全关闭 git-bash(为确保没有后台进程使 git-bash 保持活动状态,请从 Windows 注销并重新登录)。

我根据上面的答案解释了CygWin version of the same question

【讨论】:

【解决方案2】:

GitBash 类似于 Cygwin,它使用传统的 linux 权限。

我建议您通过从 git bash 运行以下命令来确保您的 ssh 目录存在于正确的位置并具有正确的权限:

mkdir ~/.ssh
chown $USER:$USER -R ~/.ssh

然后运行stat ~/.ssh查看权限是否正确更改

ls ~/.ssh

查看您的密钥是否正确安装在正确的位置。

您可以通过运行echo ~echo $HOME 查看实际注册为您的主目录的目录。

您可以通过修改~/.bashrc 并添加行export HOME=/some/directory 来更改您的linux HOME

你可以通过输入命令mount来查看你的GitBash文件系统与你的windows文件系统是如何对应的

MINGW64 /c $ mount
C:/Program Files/Git on / type ntfs (binary,noacl,auto)
C:/Program Files/Git/usr/bin on /bin type ntfs (binary,noacl,auto)
C:/Users/MyUser/AppData/Local/Temp on /tmp type ntfs (binary,noacl,posix=0,usertemp)
C: on /c type ntfs (binary,noacl,posix=0,user,noumount,auto)
D: on /d type ntfs (binary,noacl,posix=0,user,noumount,auto)

如果没有其他方法,您也可以尝试在 windows 中修改 %HOME% 环境变量以确保它指向正确的路径。但是任何 Windows 环境变量都将被您添加到 ~/.bashrc 的 linux 变量覆盖

【讨论】:

  • 感谢您的详细回复。不幸的是,我无法对其进行测试,因为问题与符号链接一起消失了。
  • 在我的情况下,所有者是正确的,但存在权限问题。毯子chmod -R 777 .ssh 解决了这个问题(以及写入 known_hosts 文件的后续问题) - 但当然强烈建议为任何这样做的人备份现有的.ssh 文件夹。
  • @SteveChambers 嗨,感谢您提请我注意这个问题。我强烈建议反对 chmod -R 777 .ssh,因为这会使您计算机的任何访问者或访客都可以看到您的私有 ssh 密钥。相反,我只需将 -R 添加到我的命令中以使其递归。我已经更新了我的答案以反映这一点。关于 .ssh 文件夹中的权限,我建议运行 chown $USER:$USER -R ~/.ssh 以使自己成为所有者并使用以下命令修复权限:chmod 644 -R ~/.ssh chmod 700 ~/.ssh chmod 600 ~/.ssh/id_rsa
【解决方案3】:

同样的事情:无法在 Git Bash for Windows 版本 2.17.1.2-64 位中创建目录“/home/carlos.leao/.ssh”。使用 Windows 10。

使用 sigod 解决方法解决。但是创建文件夹结构 C:\Program Files\Git\home\carlos.leao 并将文件夹 C:\Users\carlos.leao.ssh 复制到其中我已经从 C:\Users\carlos 创建了一个符号链接.leao.ssh 到 C:\Program Files\Git\home\carlos.leao.ssh。为此(将 carlos.leao 替换为您的 Windows 用户名):

  1. 创建此文件夹结构 C:\Program Files\Git**home\carlos.leao**
  2. 启动 CMD.exe
  3. 运行命令:mklink /d "C:\Users\carlos.leao.ssh" "C:\Program Files\Git\home\carlos.leao.ssh"

像魅力一样工作!

【讨论】:

    【解决方案4】:

    确定你正在执行哪个 [ssh.exe] ! $在哪里ssh

    D:\xxxx\bin\ssh.exe
    C:\Program Files\Git\usr\bin\ssh.exe
    C:\Windows\System32\OpenSSH\ssh.exe
    

    在我的情况下,我的导出路径中有另一个 ssh.exe。 (即:D:\xxxx\bin\ssh.exe)

    所以我删除了 ssh.exe 并保留原来的! (C:\Program Files\Git\usr\bin\ssh.exe)

    现在一切都很好!

    【讨论】:

      【解决方案5】:

      你可以使用 cd ~/.ssh/ 代替 ~/.ssh

      cd ~/.ssh/
      

      【讨论】:

      • 这会有什么不同?这与提出的问题有什么关系?
      • 请在您的答案中添加一些解释,以便其他人可以从中学习
      • 无需创建 .ssh 文件夹。默认情况下,它在 Windows 或任何其他操作系统上都有,在 Windows 中你只需键入 ~/.ssh,就会出错。如果您更改目录 cd ~/.ssh/,它将导航到您机器上的 .ssh 文件夹
      【解决方案6】:

      重新安装 git-bash 对我有用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-02-03
        • 1970-01-01
        • 2017-11-25
        • 2019-11-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多