linux平时积累

免密登录

Linux也提供了ssh客户端工具,以ssh命令的形式存在,最常使用的格式是:ssh [<user>@]<hostname>,但是这种登录方式每次都需要输入密码,而ssh还提供了另一种免密登录方式,其原理如下:

ssh免密登陆原理

machine1要想免密登录machine2首先要通过ssh-keygen通过rsa算法生成一对非对称加密的秘钥对(将保存在/root/.ssh中):

hpms@hpms-1:~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):#(回车)
Enter same passphrase again:#(回车)
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
34:c3:41:d2:1f:3d:67:75:63:72:40:d2:25:ff:80:90 root@xxh
The key's randomart image is:
+--[ RSA 2048]----+
|      .oo .+o=o*o|
|       o..E.+oO o|
|        =. ..+.. |
|       . o.    ..|
|        S       .|
|                 |
|                 |
|                 |
|                 |
+-----------------+

这个passphrase设置为空,这是ssh免密码登陆的必须条件

生成后

hpms@hpms-1:~$ ll .ssh/
总用量 24
-rw-------  1 root root 1675  7月  8 22:32 id_rsa
-rw-r--r--  1 root root  390  7月  8 22:32 id_rsa.pub

其中id_rsa.pub称为公钥,id_rsa称为私钥,公钥用来加密,私钥用来解密。公钥用来复制到要登录的目标主机的受信任列表authorized_keys中,可以借助ssh-copy-id [<user>@]<hostname>来完成:

hpms@hpms-1:~$ ssh-copy-id hpms@202.117.35.220

查看202.117.35.220的受信任列表:

hpms@hpms-2:~$ cat .ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDprJNzEdgG0ED1WmfyuRlShc2V++eHRBAY3lZOjLswlYNmdnzlm4m42da8Ao/XhtKv4+bsjWJaKMh6+ca0TNwc9phZvI04qwB0xx/cGdMc82kv83p5R8HScgnlrg3v4V9Vwq5r5utUwpCKdUb5FsDLdr6fSBoM+rb/bIceY7neoVW9B+ZAgzZjdR08d1ASblFjCSGy77qmXO2UmTtLEhtgQTZi1yLv2WwMsWq9gMUM9tRNoEnhz5GF0a+XHo9X8g4VjZmzKW6wAC4xUS9Z9iq0QEn7UEOzLmE26lKCds4fvfKVmerIwpvsIPqIcsOfZ8YvvcdnQgp8mcog7GTqeRfJ hpms@hpms-1

其中的表项就是由id_rsa.pub中的内容和远程登录信息hpms@hpms-1组成。以后当hpms-1机器上的root用户远程登录到hpms-2(202.117.35.220)时,220发现在自己的受信任列表中包含了hpms@hpms-1于是会用这个表项对应的公钥加密一个随机字符串发送到企图连接到220的机器上,如果该机器真的是hpms-1而不是伪装的,那么它就能用自己的私钥将密文解密并返给220220发现解密后的正确才会让其登录。因为每个主机的私钥唯一,因此只要自己不泄露,其他主机就无法伪装成hpms-1登录220


   转载规则


《linux平时积累》 徐兴华 采用 知识共享署名 4.0 国际许可协议 进行许可。
  目录
I I