设置 git,从本地推送/克隆到 NAS 时出现路径错误

设置 git,从本地推送/克隆到 NAS 时出现路径错误

这是我第一次使用 Git 设置 NAS 服务器,所以请原谅这些菜鸟问题(这也意味着我非常感谢您能给我的任何详细解释,因为我在这方面有点不知所措)。

以下是我目前所做的:

  1. 项目清单
  2. 设置 NAS
  3. 按照以下说明安装 git:http://www.wonko.de/2010/04/set-up-git-on-synology-nas.html(我做到了第 5 步的结束)
  4. 让 git 在我的本地计算机上运行(已完成git init并进行了初始提交)

现在,我正在尝试弄清楚如何执行该指南的第 6 步(http://www.wonko.de/2010/04/set-up-git-on-synology-nas.html) 以便我可以使用git clone并将git push本地的提交发送到我的 NAS。

我阅读了该帖子下面的评论,并尝试了以下操作:

  • environment在我的本地主文件夹中创建了一个名为 saved 的文件:.ssh/environment 并在其中输入以下内容: PATH=/opt/bin:/opt/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/sbin:/usr/local/bin

  • 使用 登录到我的 NAS ssh://root@ipaddresstonas,然后输入: cd /usr/bin ln -s /opt/bin/git*

然而,我不断得到这些结果:

我的本地机器上的终端:

$ git remote -v
nas ssh://[email protected]/volume1/path/to/test (fetch)
nas ssh://[email protected]/volume1/path/to/test (push)
$ git push nas master
[email protected]'s password: 
sh: git-receive-pack: not found
fatal: The remote end hung up unexpectedly

当我尝试$PATH在本地机器上输入时:

$ $PATH
-bash: /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/usr/local/git/bin: No such file or directory

在我的 NAS 上:

nas> cd /volume1/path/to/test
nas> ls
test.git

nas> $PATH
-sh: /opt/bin:/opt/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/syno/bin: not found

另外,请注意:我正在使用 Synology DS212J,如果有帮助的话,我认为它使用“BusyBox”。

我真的很困惑如何设置 git 来与我的 NAS 一起工作...如何推送到我的 NAS,如何克隆(或svn checkout等效)到另一台计算机等等。

答案1

unix 中的路径是一个变量,它包含各种程序的位置。

如果您输入类似的命令whoami,shell 将查看 $PATH 中列出的所有文件夹。

继续which whoami在 shell 中输入。你会看到 whoami 可能位于/usr/bin/whoami

通过/usr/bin在路径中添加 ,您只需键入 ,whoami而不必键入/usr/bin/whoami。这有点像拥有一条快捷方式。

您正在阅读的文章显示,git-upload-pack安装到 shell 不会自动查找可执行文件的位置。您需要将/opt/bin和添加/opt/sbin到路径中,以便 shell 可以“找到”git-upload-pack

有多种方法可以将目录添加到路径中。我更喜欢将其放在 /etc/profile.d 中,但 Busy Box 似乎不会在该目录中“查找”。相反,需要将其添加到 ~/.ssh/environment 文件中。当用户通过 ssh 连接到服务器时,将解析环境文件。


第 6 步

使用文本编辑器编辑以下文件(它可能尚不存在)

/home/<yourUser>/.ssh/environment

将以下行添加到 /home//.ssh/environment

export PATH=$PATH:/opt/bin:/opt/bin

然后编辑以下文件(您需要以 root 身份执行此操作)

/etc/ssh/sshd_config

在该文件中,您将找到以下短语#PermitUserEnvironment no

删除注释(#),并将 no 更改为 yes

重新启动你的 ssh 服务,或者只是重新启动整个设备。

您可以测试它是否有效,但运行以下命令

echo $PATH |grep '/opt/bin'

如果它返回了某些东西,那么一切都应该正常。

答案2

设置 rsa 密钥. 将源 IP 添加到远程的受信任 IP 列表中。 生成无密码的密钥。在另一台机器上运行 git 守护进程

ssh在客户端机器上测试您的身份验证。

相关内容