ssh公钥连接linux服务器
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 ~]$