1. 生成SSH密钥java
ssh-keygen -t rsa -C "10001@qq.com"
会生成rsa和rsa.pub,默认保存在 ~/.ssh/ 目录 ,rsa是私钥,rsa.pub是公钥。git
2. 服务器端设置shell
编辑 etc/ssh/sshd_config bash
去掉如下几行的注释, 开启公钥认证登录 。服务器
RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys AuthorizedKeysCommand none AuthorizedKeysCommandRunAs nobody
若是须要禁止使用密码登陆,能够设置ssh
PasswordAuthentication no
重启sshide
service sshd restart
3. 在.ssh目录建立config文件(设置服务器端口,在连git服务器时)rest
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私钥进行验证 。code
4. 上传公钥到服务器blog
在git bash里面执行如下命令 :
scp ~/.ssh/admin.pub git@192.168.1.101: ~/
5. 将公钥写入服务器验证文件
以root登录服务器 ,再切换到git用户 。
在git用户目录创建 .ssh/authorized_keys 文件 。目录和文件都要新建 。
而后执行添加公钥命令
cat id_rsa.pub >> ~/.ssh/authorized_keys
6. 设置文件和目录权限
SSH对公钥、私钥的权限和全部权的要求是很是严格的,总结以下:
一、设置.ssh目录权限
$ chmod 700 -R .ssh
二、设置authorized_keys权限
$ chmod 600 authorized_keys
要保证.ssh和authorized_keys都只有用户本身有写权限。不然验证无效。
7. ssh公钥验证登录
输入ssh连服务器命令
ssh git@192.168.1.101
若是显示如下信息 ,代表密钥登录成功 。
$ ssh git@192.168.1.101
Last login: Sun Jul 6 22:04:32 2014 from 192.168.1.100
[git@localhost ~]$