linux ssh 免密码连接

来源:互联网 发布:php实战视频教程百度云 编辑:程序博客网 时间:2024/05/17 01:36

“`
前提:防火墙处于关闭状态
查看防火墙状态/关闭防火墙:
service iptables status 查看目前防火墙状态,关闭用 service iptables stop
chkconfig –list | grep iptables 查看防火墙是否开机启动,关闭用 chkconfig iptables off
A 机器执行 ssh-keygen -t rsa -P “” 将在 ~/.ssh/生成两个文件 id_rsa,id_rsa.pub
可先在本机测试复制 id_rsa.pub 内容到 A 机器的 authorized_keys 文件中,没有就创建 ,然后 ssh localhost
复制 A 机器的 id_rsa.pub内容 到 B 机器的 ~/.ssh/authorized_keys 文件中
设置 B 机器的 目录和文件权限 .ssh 目录为 700 ,authorized_keys 文件权限为 600
~ 说明: 如果 id_rsa.pub 放到了哪个主目录的 .ssh 下的 authorized_keys 说明是对哪个用户拥有免密码访问的权限
其中我碰到的问题
1.authorized_keys 写错了,结果一直需要密码
2.权限没有设置目录为 700,文件为 600 ,只能本用户查看和改写
3.因为是在一台机器上设置,不同虚拟机,开始没有设置主机名,导致不知道哪台是哪个主机,是谁访问谁,按照上面的设置是 A 对 B ~ 用户 有免密码访问的权限

ssh 免密码登录原理,参考 url:http://blog.sina.com.cn/s/blog_66474b1601016ium.html
SSH采用的是”非对称密钥系统”,即耳熟能详的公钥私钥加密系统,其安全验证又分为两种级别。
前提说明:分公钥和私钥,公钥加密的东西只能私钥解,私钥加密的东西只能公钥解
1.基于口令的安全验证
1)客户端发起请求
2)远程主机接收到用户请求,把自己的公钥发给客户端
3)客户端拿到服务器的公钥后,用服务器的公钥加密码自己的一个通讯密钥(不是公钥,也不是私钥),发给服务端
4)服务器收到加密后的通讯密钥后用私钥解密,然后让客户端输入用户名/密码(这样双方都有了通讯密钥,共同的小私密,别人不知道,即使别人窃听了通讯过程,也无法解密.网上说的直接用双方公钥通信是错的,那个计算量太大,不适合通信)
5)客户端用通讯密钥加密用户名/密码发给服务端
6)服务端解密后验证,通过后就建立了连接
“`这里写图片描述

0 0
原创粉丝点击