这是我第一次使用 Git 设置 NAS 服务器,所以请原谅这些菜鸟问题(这也意味着我非常感谢您能给我的任何详细解释,因为我在这方面有点不知所措)。
以下是我目前所做的:
- 项目清单
- 设置 NAS
- 按照以下说明安装 git:http://www.wonko.de/2010/04/set-up-git-on-synology-nas.html(我做到了第 5 步的结束)
- 让 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
在客户端机器上测试您的身份验证。