欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

linux rsa SSH 免登陆

程序员文章站 2022-07-01 16:04:18
...

在系统中有两台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的内容删除一次。