centos 运用ssh的rsa算法实现无密码登录
ssh 公钥和私钥原理
1。客户端机子生成私钥和公钥,将公钥放到服务器证书中,然后就可以实现免密码登录。(服务器认证文件要有该登录用户的读执行权限)
2。a登录b:
a机子:test01账号(b也要建立此用户)
首先使用root权限设置配置 /etc/ssh/sshd_config:
然后重启ssh: /etc/init.d/sshd restart
设置开机启动 chkconfig sshd on
a切换到普通用户test01,.生成公钥和私钥:执行命令 ssh-keygen -t rsa(rda也行) 生成密钥对,/home/lihao/.ssh/下面的id_rsa为私钥,id_rsa.pub为公钥
b.2.把a机下的id_rsa.pub复制到B机下,在B机的.ssh/authorized_keys文件里,我用scp复制,然后加入到b的test01的证书里面
cat id_rsa.pub | ssh -p22 root@192.168.0.106 'cat >> /home/lihao/.ssh/authorized_keys'
c.设置b的ssh目录和证书权限:chmod 600 .ssh/authorized_keys
authorized_keys的权限要是600。(CentOS默认新生成的文件权限为:-rw-rw-r--,即自己和群组用户都可以重写该文件,这被认为是不够安全的。如上图,由于此前我的主机上并未存在authorized_keys文件,现在由于重定向输出新建了该文件,因此该文件的默认权限为-rw-rw-r--仍旧不够安全。需把群组中的w权限去掉。可使用命令:chmod 644 authorized_keys。网上的资料中,都是直接chmod 600 authorized_keys,即群组和其他用户连读取文件内容的权限都没有,当然这样是最安全的,但是系统只要求到除了自己之外其他所有用户均不能改动文件就可以了。)
d.在a机子直接ssh 192.168.0.106 -p22 直接可以进入了。不需要输入密码
双向的话,可以同样配置b机子。这里ssh 192.168.0.106 -p22 (注意端口)
遇到错误:
1。
user@ server:~$ ssh-keygen -t rsa Enter passphrase (empty for no passphrase): Enter same passphrase again: open /home/user/.ssh/id_rsa failed: Permission denied.
解决:
sudo yum remove selinux*
2。
is not in the sudoers file.This incident will be reported
解决:
编辑/etc/sudoers文件。也就是输入命令"vim /etc/sudoers",输入"i"进入编辑模式,找到这一行:"root ALL=(ALL) ALL"在起下面添加"xxx ALL=(ALL) ALL"(这里的xxx是你的用户名),然后保存(就是先摁一下Esc键,然后输入":wq")退出。