SSH免密码登录

SSH

SSH(Secure Shell )是一种网络协议,用于计算机之间的加密登录。

公钥登录

公钥(Public Key)与私钥(Private Key)是通过一种算法得到的一个密钥对(即一个公钥和一个私钥),公钥是密钥对中公开的部分,私钥则是非公开的部分。
所谓”公钥登录”,原理很简单,就是用户将自己的公钥储存在远程主机上。登录的时候,远程主机会向用户发送一段随机字符串,用户用自己的私钥加密后,再发回来。远程主机用事先储存的公钥进行解密,如果成功,就证明用户是可信的,直接允许登录shell,不再要求密码。

具体步骤

1. 通过ssh-keygen生成秘钥
$ ssh-keygen -t rsa

-t指定加密类型为rsa,运行该命令以后,会在$HOME/.ssh/目录下,会新生成两个文件:id_rsa和id_rsa.pub。前者是你的私钥,后者是你的公钥。
袁克强的博客

2. 复制公钥到远程服务器

复制到/home/$USER/.ssh (.ssh目录不存在则创建一个,保证.ssh和authorized_keys都只有用户自己有写权限,否则验证无效: chmod 700 -R .ssh

$ scp id_rsa.pub root@myhost.com:~/.ssh/id_rsa.pub
3. 将公钥保存到authorized_keys文件

登录远程服务器后,将公钥保存到authorized_keys文件。

$ cd ~/.ssh 
$ cat id_rsa.pub >> authorized_keys

至此,即可免密码登录远程服务器。