1.使用环境
1.1服务端
- 操作系统:CentOS7
- SSH:OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017
1.2客户端
- Win10 专业版:10.0.18362.356
- Git:git version 2.16.2.windows.1
- TortoiseGit:TortoiseGit 2.10.0.2
2.搭建步骤
2.1升级服务器端git
CentOS自带的git版本较低,最好升级为较新的版本,参见博客升级git版本
2.2添加系统服务器端用户
- adduser git,添加用户
- passwd git,设置密码
2.3服务器端创建git库
- 以新建的git用户登录
- 创建仓库目录/home/git/git-server/test.git
- 进入test.git目录,git init --bare,初始化git仓库
2.4客户端下载
- 选中一个目录右键->Git Bash Here
- git clone git@192.168.1.108:/home/git/git-server/test.git,输入服务器git用户密码,回车下载
当你第一次使用Git的clone或者push命令连接GitHub时,会得到一个警告:
The authenticity of host ‘github.com (xx.xx.xx.xx)’ can’t be established.
RSA key fingerprint is xx.xx.xx.xx.xx.
Are you sure you want to continue connecting (yes/no)?
这是因为Git使用SSH连接,而SSH连接在第一次验证GitHub服务器的Key时,需要你确认GitHub的Key的指纹信息是否真的来自GitHub的服务器,输入yes回车即可。
Git会输出一个警告,告诉你已经把GitHub的Key添加到本机的一个信任列表里了:
Warning: Permanently added ‘github.com’ (RSA) to the list of known hosts.
这个警告只会出现一次,后面的操作就不会有任何警告了。
3.添加SSH Key免密码登录
使用以上方式访问git服务器,每次访问时均需输入密码,可以采用RSA密钥人证方式免密码访问
3.1开启服务端RSA认证功能
- 进入服务器 /etc/ssh 目录,打开sshd_config文件,去掉
PubkeyAuthentication yes
这一样前面的#,保存
其中 Port 22 是 ssh 端口号,默认22
网上很多人写的要加 RSAAuthentication yes 配置,这个版本不需要 - 重启ssh服务,service sshd restart
3.2本地验证RSA认证
- 打开一个终端,输入ssh-keygen,一直回车,完成后会在用户目录的 .ssh目录生成两个文件,公钥文件 id_rsa.pub 和私钥文件 id_rsa,如果当前用户是git,则目录位置为 /home/git/.ssh
- 进入 .ssh 目录,执行 cat id_rsa.pub >> authorized_keys 将公钥导入
- 修改 .ssh 目录访问权限,chmod 600 *
- 进入终端执行 ssh localhost,显示登录成功
如果PubkeyAuthentication yes 未设置,登录时会提示错误:
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password)
如果未修改 .ssh 目录权限,会提示错误:
Bad owner or permissions on /home/git/.ssh/config
3.3添加客户端公钥
- 客户端任意目录右键->git bash here进入git命令行
- 执行命令 ssh-keygen -C xxxxx@gmai.com,一直回车,会在用户目录生成两个文件,公钥文件 id_rsa.pub 和私钥文件 id_rsa
- 将客户端公钥文件中的内容追加到服务器 authorized_keys 文件中,如果文件中已有内容,回车分割
- 在git命令行中输入 ssh git@192.168.1.108:/home/git/git-server/test.git,回车,登录成功
3.4TortoiseGit添加私钥
git生成的私钥,TortoiseGit不能直接使用,需转换为TortoiseGit使用的私钥格式才能使用
- 在TortoiseGit的安装菜单中找到PuTTYGen并运行,切换到Conversions标签页,中点击Import key,选择ssh-keygen生成的私钥文件所在位置,比如id_rsa文件
- 点击Save private key按钮,将其保存为.ppk文件
- 打开Pageant,点击Add Key,选择前一步所保存的.ppk文件所在的位置,确定
- 右键菜单选择TortoiseGit Git Clone 菜单,输入git服务地址,确定,下载成功