虽然网上不少讲ssh-keygen配置的,但是感觉比较少讲到了后面的要修改权限的问题。不知道是不是因为这个太基础了!所以在这里写个比较详细的以便自己参与,不用再到处找资料。
环境
客户端(下面称机器W): windows7,Git 2.5.0
服务端(下面称机器L): centos6.5, git2.7.0(CentOS安装最新版的git)
在客户机W上创建生成密钥文件
安装好客户端git后,点击git-bash.exe进入命令行(如下图)
- 如果没有.ssh目录就创建一个
$ cd ~/
$ mkdir .ssh
效果如下图
- 生成密钥文件如:私钥文件id_rsa和公钥文件 id_rsa.pub
如果这里要免密码登录,就一直回车就行了
$ ssh-keygen -t rsa
或者
$ ssh-keygen -t rsa -C "your@**.com"
把公钥增加到服务机信任列表
- 传输客户机W的公钥文件 id_rsa.pub 到服务机L(如目录/tmp/sshkey/)下
- 导入公钥到信任文件 authorized_keys
- 修改信任文件列表 authorized_keys(要保证.ssh和authorized_keys都只有用户自己有写权限。否则验证无效。(今天就是遇到这个问题,找了好久问题所在)
- 如果是直播复制id_rsa.pub里的内容,通过vi粘贴进authorized_keys文件的话,有时会出问题~。
[git@vm-git .ssh]$ cat /tmp/sshkey/id_dsa.pub >> ~/.ssh/authorized_keys
[git@vm-git .ssh]$ chmod 600 authorized_keys
验证登录
需要提醒的是,此处的登录验证是在git用户没有禁止脚本登录的情况下的验证。
即在/etc/passwd里没有下面的…git-shell,而是/bin/bash
git:x:501:501::/home/git:/usr/local/bin/git-shell
验证
$ ssh git@192.168.0.24
注意:在不修改信任文件列表 authorized_keys情况下登录会出现下面的情况