【问题标题】:git clone ssh repo in bash shellbash shell 中的 git clone ssh repo
【发布时间】:2012-08-24 17:00:40
【问题描述】:

我正在编写一个 bash 脚本,其中包括使用 SSH 克隆一个私有存储库, 问题是当我直接在终端中写 git clone ... 时,它工作正常
但在 bash 脚本中它也写成 git clone ... 但它给出了错误

权限被拒绝(公钥)。 致命:远端意外挂断

有什么想法可能是什么问题?

即使文件仅包含: sudo git clone git@github.com:username/Project.git

【问题讨论】:

  • 运行脚本的用户是否相同? ssh 将使用运行它的人的私钥。
  • sudo 改变了很多东西——在某些情况下你说你正在使用它,在某些情况下你说你没有;小心保持一致。此外,您当前的 shell 是否有 TTY 也很重要——脚本是否由 cron 调用?直接调用?等等(另外,命名以 .sh 结尾的 bash 脚本是不好的做法;请参阅 talisman.org/~erlkonig/documents/…
  • 事实上我只是尝试了echo $USER in both,它们不一样,文件中的那个是root,所以我从sudo bash file.sh中删除了sudo,它工作正常,但我需要以root身份执行文件,我可以在脚本中更改用户吗?如果是,请告诉我如何,谢谢
  • 以您自己的身份运行git,然后在本地运行sudo chown 和/或sudo chmod(如有必要)。不过,“以 root 身份执行文件”不需要更改所有权;只需 sudo repo/file 以 root 身份执行 repo/file

标签: git bash shell ssh terminal


【解决方案1】:

我发现了问题所在,我只是在两者中都尝试了 echo $USER ,但它们并不相同,文件中的那个是 root ,所以我从 sudo bash file.sh 中删除了 sudo 并且它工作正常

【讨论】:

    【解决方案2】:

    您没有为您的脚本提供任何代码,因此很难诊断。

    但是关于你的脚本中可能有什么不同的一些想法:不同的当前目录、不同的环境变量、缺少加载不同解释器的 hash-bang 行、hash-bang 行上的不同选项。

    【讨论】:

    • 如果 .sh 文件只包含 git clone git@github.com:... 并且文件放在任何文件夹中,也会出现同样的问题
    猜你喜欢
    • 2020-04-18
    • 2012-08-04
    • 2015-09-24
    • 1970-01-01
    • 2015-06-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-25
    • 2018-08-29
    相关资源
    最近更新 更多