1.  生成SSH密钥

ssh-keygen -t rsa -C “[email protected]
会生成rsa和rsa.pub,默认保存在 ~/.ssh/ 目录 ,rsa是私钥,rsa.pub是公钥。

 

2.  服务器端设置

编辑 etc/ssh/sshd_config

去掉以下几行的注释, 开启公钥认证登陆 。

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
AuthorizedKeysCommand none
AuthorizedKeysCommandRunAs nobody
如果需要禁止使用密码登录,可以设置

PasswordAuthentication no
重启ssh

service sshd restart
3.   在.ssh目录创建config文件(设置服务器端口,在连git服务器时)

host 192.168.1.101
user git

PreferredAuthentications publickey
identityfile C:/Users/Administrator/.ssh/admin

hostname 192.168.1.101
port 22
指定连接192.168.1.101的服务器时使用admin私钥进行验证 。

 

4.  上传公钥到服务器

在git  bash里面执行以下命令 :

scp ~/.ssh/admin.pub [email protected]: ~/
5.  将公钥写入服务器验证文件

以root登陆服务器 ,再切换到git用户 。

在git用户目录建立 .ssh/authorized_keys 文件 。目录和文件都要新建 。

然后执行添加公钥命令

cat id_rsa.pub >> ~/.ssh/authorized_keys
6.  设置文件和目录权限

SSH对公钥、私钥的权限和所有权的要求是非常严格的,总结如下:

1、设置.ssh目录权限

 

$ chmod 700 -R .ssh

2、设置authorized_keys权限

 

$ chmod 600 authorized_keys
要保证.ssh和authorized_keys都只有用户自己有写权限。否则验证无效。

 

7.  ssh公钥验证登陆

输入ssh连服务器命令

ssh [email protected]
如果显示以下信息 ,表明密钥登陆成功 。

$ ssh  [email protected]

Last login: Sun Jul  6 22:04:32 2014 from 192.168.1.100

[git@localhost ~]$