【发布时间】: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