这篇讲得很详细 参考此篇
补充
难点:公钥存放在.ssh/authorized_keys文件中。所以我们在/home/git下创建.ssh目录,然后创建authorized_keys文件,并将刚生成的公钥导入进去。
服务器上目录结构
mkdir -p /data/git/gitrepository.git
git init --bare /data/git/gitrepository.git/
chown -R git:git gitrepository.git/
windows客户端终端窗口
$ git clone ssh://git@112.8.8.8:2205/data/git/gitrepository.git
因为是外网端口号不是22。相比普通的克隆路径多了ssh,ip后面带端口号。发现这个问题百度上不是很容易能搜到记录一下。端口号非22git远程仓库克隆
如何生成公钥
在终端输入。
ssh-keygen -t rsa -C "forwhat.cn"//注意。forwhat.cn为用户名
按三个回车。windows在 C:\Users\Administrator.ssh 目录下会生成
id_rsa.pub 和id_rsa 其中id_rsa是私钥 id_rsa.pub是公钥。
将公钥拷贝到服务器上authorized_keys文件中,一行一个。
服务器上执行 ssh-keygen -t rsa -C “forwhat.cn” 同样会生成公钥和私钥路径会指出来。一般在home目录下.ssh/id_rsa.pub 所以下面为~/.ssh/id_rsa.pub 此命令执行目录为git的home/git/.ssh
此处ssh git@192.168.1.5 ‘cat >> .ssh/authorized_keys’ < ~/.ssh/id_rsa.pub 命令效果 和 id_rsa.pub拷贝进authorized_keys是一样的应该。
[root@template git]# ssh-keygen -t rsa -C "youname@live.cn"
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
[root@template .ssh]# ssh git@192.168.1.5 'cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub
注意文件权限
修改 .ssh 目录的权限为 700
修改 .ssh/authorized_keys 文件的权限为 600
关于git clone端口问题。
其中公网IP112.8.8.8的2205端口映射到该内网服务器主机的22端口。