wi7下面配置 git bash使用ssh公钥/私钥登陆centos
2014-07-07 20:20
513 查看
最近在win7下面研究ssh公钥/私钥登陆 centos,至于 ssh这货是什么东西 ,不懂的建议百度一下 。最好能理解ssh公钥私钥的登陆流程 。开始,在win7下面生成密钥 ,配置config ,上传到centos服务器 ,编辑 sshd配置文件 ,这些步骤都做了 ,但是一测试 ,还是连接失败 ,不是权限拒绝 ,就是还是要输入密码 。妈的,要输入密码,我还配个什么劲啊!最后终于搞定 ,是权限的问题 。以下是详细步骤 。
1 。首先用密码登陆centos ,编辑 etc/ssh/sshd_config
去掉以下几行的注释
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
AuthorizedKeysCommand none
AuthorizedKeysCommandRunAs nobody
这个意思是开启公钥认证登陆 。
然后service sshd restart ,重启ssh 。
然后添加个用户git ,设置密码 ,我们用用户git测试共钥登陆 。不建议用root测试,以防万一 。
2.生成公钥和私钥
在git bash 里面运行以下命令
ssh-keygen -t rsa -f ~/.ssh/admin
win7会在C:\Users\Administrator\.ssh生成两个文件 admin.pub 和admin两个文件 。admin是私钥文件 ,admin.pub是公钥文件 。
然后建立一个config文件 ,指明登陆某台服务器用哪个私钥文件 。
比如我写入了以下内容:
host 192.168.1.101
user git
hostname 192.168.1.101
port 22
identityfile C:/Users/Administrator/.ssh/admin
指定连接192.168.1.101的服务器时使用admin私钥进行验证 。
3.上传公钥到服务器,我这里的的服务器是局域网内的192.168.1 .101 。
在git bash里面执行以下命令 :
scp ~/.ssh/admin.pub git@192.168.1.101 : ~/
4.将公钥写入服务器验证文件
以root登陆服务器 ,再切换到git用户 。
在git用户的家目录下面建立 .ssh/authorized_keys文件 。目录和文件都要新建 。
然后执行cat
admin.pub >> ~/.ssh/authorized_keys
写入公钥验证文件 。
这个文件就是服务器和客户端验证公钥是否相同的文件 。
5
。公钥和私钥文件权限设置 。这一步很重要 。否则会验证失败 。
SSH对公钥、私钥的权限和所有权的要求是非常严格的,总结如下:
1、下面两个目录的所有权必须是user,所属组也应该是user,权限必须为700
\home\user
\home\user\.ssh
2、下面公钥文件的所有权必须是user,所属组也应该是user,权限必须为644
\home\user\.ssh\authorized_keys
3、下面私钥文件的所有权必须是user,所属组也应该是user,权限必须是600
\home\user\.ssh\id_rsa
在centos上面通过 chown命令更改文件所有权和所属用户组 ,通过chmod命令更改权限 。
但是第三步的私钥文件的权限在win7下面好像无法设置 。即使在git bash里面用了chmod 600 来改变私钥文件的权限还是没有用处,用 ls -l ~/..ssh来查看 ,还是其他用户用读的权限 。。。
我自己使用的是直接将C:\Users\Administrator\.ssh目录设为只用当前管理员才有权限 。其他的目录也变成了只用管理员才可读的文件 ,其他用户没有读取的权限 。这样也实现了 600 。
7 。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 ~]$
如果提示输入git用户的密码 ,就表明以上配置用错误 ,ssh密钥登陆失败 。请回去检查以上配置是否有错误 。并查找错误原因 。
1 。首先用密码登陆centos ,编辑 etc/ssh/sshd_config
去掉以下几行的注释
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
AuthorizedKeysCommand none
AuthorizedKeysCommandRunAs nobody
这个意思是开启公钥认证登陆 。
然后service sshd restart ,重启ssh 。
然后添加个用户git ,设置密码 ,我们用用户git测试共钥登陆 。不建议用root测试,以防万一 。
2.生成公钥和私钥
在git bash 里面运行以下命令
ssh-keygen -t rsa -f ~/.ssh/admin
win7会在C:\Users\Administrator\.ssh生成两个文件 admin.pub 和admin两个文件 。admin是私钥文件 ,admin.pub是公钥文件 。
然后建立一个config文件 ,指明登陆某台服务器用哪个私钥文件 。
比如我写入了以下内容:
host 192.168.1.101
user git
hostname 192.168.1.101
port 22
identityfile C:/Users/Administrator/.ssh/admin
指定连接192.168.1.101的服务器时使用admin私钥进行验证 。
3.上传公钥到服务器,我这里的的服务器是局域网内的192.168.1 .101 。
在git bash里面执行以下命令 :
scp ~/.ssh/admin.pub git@192.168.1.101 : ~/
4.将公钥写入服务器验证文件
以root登陆服务器 ,再切换到git用户 。
在git用户的家目录下面建立 .ssh/authorized_keys文件 。目录和文件都要新建 。
然后执行cat
admin.pub >> ~/.ssh/authorized_keys
写入公钥验证文件 。
这个文件就是服务器和客户端验证公钥是否相同的文件 。
5
。公钥和私钥文件权限设置 。这一步很重要 。否则会验证失败 。
SSH对公钥、私钥的权限和所有权的要求是非常严格的,总结如下:
1、下面两个目录的所有权必须是user,所属组也应该是user,权限必须为700
\home\user
\home\user\.ssh
2、下面公钥文件的所有权必须是user,所属组也应该是user,权限必须为644
\home\user\.ssh\authorized_keys
3、下面私钥文件的所有权必须是user,所属组也应该是user,权限必须是600
\home\user\.ssh\id_rsa
在centos上面通过 chown命令更改文件所有权和所属用户组 ,通过chmod命令更改权限 。
但是第三步的私钥文件的权限在win7下面好像无法设置 。即使在git bash里面用了chmod 600 来改变私钥文件的权限还是没有用处,用 ls -l ~/..ssh来查看 ,还是其他用户用读的权限 。。。
我自己使用的是直接将C:\Users\Administrator\.ssh目录设为只用当前管理员才有权限 。其他的目录也变成了只用管理员才可读的文件 ,其他用户没有读取的权限 。这样也实现了 600 。
7 。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 ~]$
如果提示输入git用户的密码 ,就表明以上配置用错误 ,ssh密钥登陆失败 。请回去检查以上配置是否有错误 。并查找错误原因 。
相关文章推荐
- git使用ssh方式clone时候的,配置公钥和私钥的原理
- ssh配置公钥和私钥登陆SecureCRT
- Xshell5配置ssh免密码登录-公钥与私钥登录linux服务器(xshell如何登陆上阿里云服务器)
- 如果不配置SSH公钥使用git远程仓库会怎么样?
- CentOS 配置SSH免密码登陆(公私钥登陆)
- 使用SecureCRT登陆SSH[Key方式公钥私钥]
- Linux SSH使用公钥私钥实现免登陆 以及 登陆失败、公钥失效的处理
- Centos 限制root帐户登陆ssh并配置指定帐户可以使用sudo命令
- git 安装使用 配置SSH公钥
- 使用CSDN CODE托管代码,Git仓库的SSH公钥与私钥分析
- Debian5下ssh配置和使用私钥登陆系统
- Xshell5配置ssh免密码登录-公钥与私钥登录linux服务器(xshell如何登陆上阿里云服务器)
- git使用ssh协议,生成公钥和私钥,并指定私钥
- CentOS 配置SSH免密码登陆(公私钥登陆)
- Centos下配置使用私钥文件登陆
- CentOS使用在有私钥时使用ssh进行git clone要求输入密码的解决方案
- centOS6.3下SSH简单配置及使用SecureCRT登陆
- git 的简单使用(linux)含ssh配置
- SSH简介及配置使用SSH登陆远程主机
- git的ssh配置,包括多个git server配置ssh config,使用多个ssh identify