这是一个检查清单:
- 您尝试连接的服务器上是否启用了 ssh?
- 服务器上是否安装了 GIT?
- 您是否在服务器上设置了 Git 存储库?
- 存储库是否具有正确的权限并在服务器的配置中启用了共享存储库?
您是否将 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 会有点不同)
- 设置龟甲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
您现在可能想要使用密码重复设置密钥....