以下是一个简单的检查列表:
- 你要连接的服务器上是否启用了ssh?
- 服务器上是否安装了GIT?
- 你在服务器上是否设置了Git仓库?
- 仓库是否具有正确的权限并且在服务器配置中启用了sharedrepository?
你是否将ssh密钥放置在适当的位置以供GIT使用?
建议:
1:由于你可以使用putty进行连接,看起来ssh已经设置好了。
2:使用putty连接到服务器。输入 git --version
,你会得到一个合理的响应吗?如果没有,则需要在服务器上安装它。
3:尝试在服务器上设置一个新的仓库。假设它是*nix风格的服务器,请使用putty并连接到服务器,并使用以下命令创建一个新的仓库,假设你有一个目录/home/source_code。echo行只是创建一个带有一些文本的文件,以便我们有一些东西可以开始使用。
cd /home/source_code
mkdir test_repo
cd /home/source_code/test_repo
echo "first file" > t.txt
git init
git add .
git commit -m "Initial Import"
现在我们有一个包含一个t.txt文件的仓库。通常情况下,您不应该将更改推送到包含工作副本更改的仓库中。服务器上拥有仓库的目的是让人们随时可以将其推入其中。我们创建了一个“裸”的克隆,它只是git数据库,这样就没有任何工作副本更改的可能性。正是这个“裸”的克隆将被用作中央git仓库。
cd /home/source_code
git clone --bare test_repo/ test_repo.git
现在您可以摆脱我们设置的临时存储库。
cd /home/source_code/
rm -rf test_repo
在您的本地计算机上,再次尝试克隆。
git clone ssh://user@host.com:port/home/source_code/test_repo.git
4: 权限:这不应该对克隆、获取或拉取造成问题,除非您选择的存储库位置没有读取权限。如果在推回时出现“Permission denied”错误,请参考权限更正
5: 为GIT设置公钥/私钥:
- 使用putty连接服务器
- 在您的~/.ssh文件夹上设置权限:
chmod 700 .ssh
- 在您的~/.ssh/authorized_keys文件上设置权限:
chmod 600 authorized_keys
- 生成密钥:
ssh-keygen -t dsa
- 接受它想要使用的文件名
- 不输入密码(只需输入)。稍后您将希望重新设置密码。
- 将pub密钥添加到authorized_keys文件中:
cat id_dsa.pub >> .ssh/authorized_keys
- 编辑/etc/ssh/ssh_config并添加行
PubkeyAuthentication yes
- 重启ssh守护进程:
sudo /etc/init.d/ssh restart
- 从服务器将id_dsa和id_dsa.pub复制到本地硬盘驱动器(使用winscp或sftp或其他类似工具)c:\users\userName\.ssh目录(对于vista,其他版本的windows位置会略有不同)
- 将tortoise git设置为指向C:\Program Files\Git\bin\ssh.exe(而不是putty)
命令行git和tortoise git都应该已经设置好了。在本地机器上尝试再次克隆。
git clone ssh://user@host.com:port/home/source_code/test_repo.git
您可能现在想要重复设置带有密码短语的密钥....