linux rsa SSH 免登陆

在系统中有两台linux服务器A(192.168.0.12)、服务器B(192.168.0.6),现在需要的是可以在服务器A上不使用密码直接SSH连接服务器B。

一、生成公私钥

通过在客户机A上生成公私钥,生成的公私钥命令如下所示:

 ssh-keygen -t rsa -f ~/.ssh/id_rsa
  

-b:指定密钥长度; 
-e:读取openssh的私钥或者公钥文件; 
-C:添加注释; 
-f:指定用来保存密钥的文件名; 
-i:读取未加密的ssh-v2兼容的私钥/公钥文件,然后在标准输出设备上显示openssh兼容的私钥/公钥;
-l:显示公钥文件的指纹数据; 
-N:提供一个新密语; 
-P:提供(旧)密语; 
-q:静默模式; 
-t:指定要创建的密钥类型。

执行完成后会在~/.ssh/根目录下生成id_rsa 和id_rsa.pub 文件。

二、将服务器A中生成的~/.ssh/id_rsa.pub文件拷贝到服务器B 任意用户的~/.ssh/目录下

注:如果服务器B用户路径下不存在.ssh文件夹时,需要手工创建(mkdir .ssh),必须要将.ssh权限设置为(chmod 700 .ssh),这是关键的一项其他权限无法生效。

将id_rsa.pub拷贝到服务器B的~/.ssh/目录下后,在~/.ssh/目录下执行如下命令:

cat id_rsa.pub >> authorized_keys

 chmod 644 authorized_keys

会生成authorized_keys文件,并将authorized_keys授权为644权限,authorized_keys文件的权限一定要设置成644,其他权限无效(我就是在这里掉坑)

三、设置完以上代码后,在服务器A中通过SSH连接服务器B,连接命令如下所示:

        ssh -p 23 xxxxx@192.168.0.6

        其中-p 指定连接端口 xxxxx为ssh链接用户名

如果还是需要密码才能连接成功,请检查以下项:

1、服务器A和服务器B的防火墙是否已经关闭(service iptables status)

2、检查服务器B中的~/.ssh文件夹设置的权限是否为700

3、检查服务器B中的~/.ssh/authorized_keys文件权限是否为644

4、当第一次链接成功后会在~/.ssh/文件夹下生成一个known_hosts文件,其中会记录第一次链接信息,链接一次请将其中的对应IP的内容删除一次。

猜你喜欢

转载自timerbin.iteye.com/blog/2293103