Linux公钥免密登录

假设有 A、 B 两台 Linux 服务器,我们希望能够从其中一台服务器通过 SSH 免密码登录到另一台服务器。
两台服务器的信息如下: 

主机名IP地址
SERVER_A192.168.12.11
SERVER_B192.168.12.12

1.Linux下生成密钥

执行ssh-keygen -t rsa 创建密钥,一直回车即可,红框是输入密码,因为是免密所以直接回车略过;执行完之后会在/root/.ssh/下生成两个文件id_rsa、id_rsa.pub分别为私钥和公钥,

id_rsa保存好不要丢失!id_rsa保存好不要丢失!id_rsa保存好不要丢失!重要的事说三遍。

如果对密钥长度有限制的话可以执行ssh-keygen -t rsa -b 4096

#SERVER_A

[root@localhost ~]# cd ~/.ssh/
[root@localhost .ssh]# ll
-rw------- 1 root root   0 Jul  4  2018 authorized_keys
-rw-r--r-- 1 root root 393 Jul 27  2017 known_hosts
[root@localhost .ssh]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):    #key文件名
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:
22:83:19:68:5e:d5:80:98:6c:9a:ad:ca:a0:5c:e6:1f root@iZ2ze96duktw4ta66bqynxZ
The key's randomart image is:
+--[ RSA 2048]----+
|. o .oo          |
| * ..  .         |
|++..             |
|= o+             |
| oo o . S        |
|o  o o .         |
|* +  E           |
|oo .  .          |
|    ..           |
+-----------------+
#生成成功
[root@localhost .ssh]# ll
-rw------- 1 root root  809 Jul 14 19:18 authorized_keys
-rw------- 1 root root 1675 Oct 13 10:09 id_rsa        #私钥
-rw-r----- 1 root root  410 Oct 13 10:09 id_rsa.pub    #公钥
-rw-r--r-- 1 root root  396 Jun 11 14:40 known_hosts
[root@localhost .ssh]#

2.创建信任

  1. 把生成的公钥文件id_rsa.pub下载、上传到目标服务器上,也可以直接通过命令ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.1.1传过去,不过命令默认端口是22
  2. 登录目标服务器,相同的目录/root/.ssh/下查看有没有authorized_keys文件,没有的话需要创建一个,命令是               touch authorized_keys ,创建后授权600 ,把公钥文件id_rsa.pub追加到authorized_keys文件中,命令是                        cat 192.168.1.1.pub >> authorized_keys,注意是双箭头>>单箭头会覆盖文件中的内容。
#SERVER_A

[root@localhost .ssh]# scp id_rsa.pub root@SERVER_B:/root/.ssh/SERVER_B_authorized_keys


#SERVER_B

[root@localhost ~]# cd ~/.ssh/
[root@localhost .ssh]# ll
-rw------- 1 root root  809 Jul 14 19:18 authorized_keys
-rw------- 1 root root  809 Jul 14 19:18 SERVER_B_authorized_keys   #服务器A的公钥
-rw-r--r-- 1 root root  396 Jun 11 14:40 known_hosts
[root@localhost .ssh]# cat SERVER_B_authorized_keys >> authorized_keys  #将公钥导入到认证文件
[root@localhost .ssh]#

 3.实现SERVER_A上的远程SERVER_B的操作

#SERVER_A

[root@localhost ~]# scp /data/kfb/bak/mysql/mysql.zip root@SERVER_B:/data/kfb/bak/mysql/
[root@localhost ~]#
[root@localhost ~]# cd /data/kfb/bak/mysql/
[root@localhost mysql]# ll
total 1
-rw-r--r-- 1 root    root  8082213 Oct 13 10:24 mysql.zip
[root@localhost mysql]#

Linux初窥:Linux下SSH免密码登录配置

Linux ssh下实现免密码登录

Linux 实现密钥免密登录


版权声明:本文为weixin_43929986原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。