假设有 A、 B 两台 Linux 服务器,我们希望能够从其中一台服务器通过 SSH 免密码登录到另一台服务器。
两台服务器的信息如下:
主机名 IP地址 SERVER_A 192.168.12.11 SERVER_B 192.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.创建信任
- 把生成的公钥文件id_rsa.pub下载、上传到目标服务器上,也可以直接通过命令ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.1.1传过去,不过命令默认端口是22
- 登录目标服务器,相同的目录/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]#版权声明:本文为weixin_43929986原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。