bashshell中的git克隆ssh repo

bashshell中的git克隆ssh repo,git,bash,shell,ssh,terminal,Git,Bash,Shell,Ssh,Terminal,我正在编写一个bash脚本,其中包括使用SSH克隆一个私有存储库, 问题是,当我直接在终端中编写git clone…时,它工作正常 但是在bash脚本中,它也写了git clone…,但是它给出了错误 权限被拒绝(公钥)。 致命:远程端意外挂起 你有没有想过问题出在哪里 即使文件仅包含: sudo git克隆git@github.com:username/Project.git 您尚未为脚本提供任何代码,因此很难诊断 但是关于脚本中可能存在的不同之处的一些想法:不同的当前目录、不同的环境变量、缺

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

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

你有没有想过问题出在哪里

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

您尚未为脚本提供任何代码,因此很难诊断


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

我发现了问题所在,我只是尝试了两种方法中的echo$USER,但它们并不相同,文件中的一个是root,因此我从sudo bash file.sh中删除了sudo,它工作正常

如果.sh文件只包含
git克隆,同样的问题也会发生git@github.com:…
如果文件被放入任何文件夹,它是运行脚本的同一用户吗
ssh
将使用运行它的人的私钥。
sudo
极大地改变了事情——在某些情况下你说你正在使用它,在某些情况下你说你没有;注意保持一致。此外,当前shell是否有TTY也很重要——脚本是否由cron调用?直接调用?等等(另外,命名以
.sh
结尾的bash脚本是一种不好的做法;请参阅)事实上,我刚刚尝试了两个
中的
echo$USER,但它们不一样,文件中的一个是root,所以我从
sudo bash file.sh
中删除了
sudo
,效果很好,但我需要以root身份执行该文件,我可以在脚本中更改用户吗?如果是,请告诉我如何操作,谢谢您以自己的身份运行
git
,然后在必要时在文件上本地运行
sudo chown
和/或
sudo chmod
。“以root身份执行文件”不需要更改所有权;只需
sudo repo/file
以root身份执行
repo/file