SSH免密码登录的原理:
SSH证书认证登录的基础是一对唯一匹配密钥:私钥(private+key)和公钥(public+key)。
公钥用于对数据进行加密,而且只能用于加密。而私钥只能对使用所匹配的公钥,所加密过的数据进行解密。私钥需要用户单独妥善保管。
SSH客户端使用私钥向服务器证明自已的身份。而公钥是公开的,可以按需将其配置到目标服务器上自己的相应帐号中。
在进行SSH登录认证时,进行私钥和公钥协商。如果匹配,则身份得以证明,认证成功,允许登录。
否则,将会继续使用密码验证等其它方式进行登录校验。SSH证书验证登录配置及登录协商过程,如下证书校验交互登录流程示意图所示
举例:
目前是要实现:在A站点"122.141.182.219" 上实现ssh无密码连接B站点:Linux服务器"218.4.142.156"
1) 在A站点:"122.141.182.219"服务器上使用"ssh-keygen -t rsa"命令来创建公钥。
根据提示,一路回车即可,提示输入密码时回车即表示空密码。在用户根目录下会生成.ssh文件夹,里面包括id_rsa(私钥)和id_rsa.pub(公钥)
2) 在A站点上用 ssh-copy-id 命令将公钥复制或上传到远程主机B 218.4.142.156,并将身份标识文件追加到218.4.142.156的 ~/.ssh/authorized_keys 中:
ssh-copy-id -i ~/.ssh/id_rsa.pub root@218.4.142.156
或者另外一种方法
A站点上
scp ./.ssh/id_rsa.pub root@218.4.142.156:~/.ssh/
然后登录B站点上
cd ~/.ssh/
cat id_rsa.pub >>authorized_keys
chmod 600 authorized_keys
3)验证在A站点免密码 SSH 登录站点B
免密码登录配置好以后,可以通过SCP来传输文件,不用每次都输入密码了