私钥与公钥
所谓"公钥登录",原理很简单,就是用户将自己的公钥储存在远程主机上。登录的时候,远程主机会向用户发送一段随机字符串,用户用自己的私钥加密后,再发回来。远程主机用事先储存的公钥进行解密,如果成功,就证明用户是可信的,直接允许登录shell,不再要求密码。
这种方法要求用户必须提供自己的公钥。如果没有现成的,可以直接用ssh-keygen生成一个。
实验环境:
两台linux redhat6.5
地址分别为 192.168.10.100 / 192.168.10.200
首先开启服务端这的密钥验证
# vim /etc/ssh/sshd_config
去除这两项的#
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
绑定一个普通用户到客户机
在一个普通用户下:
注意这个密码是有长度要求的,至少大于4位。
生成的密钥储存在用户家目录下的SSH文件夹
然后把密钥给到zzz用户
$ ssh-copy-id -i id_rsa.pub zzz@192.168.10.200
这里的密码是用户ZZZ的密码。
回到ZZZ的家目录下查看,发现已经有了公钥文件
这时我们就可以使用密钥登陆zzz的系统了。
$ ssh zzz@192.168.10.200
下面布置ssh代理用来免密码登陆密钥
[perk@zred .ssh]$ ssh-agent bash
[perk@zred .ssh]$ ssh-add
Enter passphrase for /home/perk/.ssh/id_rsa: #输入密钥的密码
Identity added: /home/perk/.ssh/id_rsa (/home/perk/.ssh/id_rsa)
这样我们就可以免密码使用密钥登陆zzz的系统(并不安全)