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的内容删除一次。
上一篇: sonar忽略