二、多台服务器相互无密码访问

多台服务器相互无密码访问,与两台服务器单向无密码访问的原理是一样的,只不过由于是多台服务器之间相互无密码访问,不能象两台服务器无密码登录那样直接上传,步骤如下:

1、在需要无密码登录远程服务器的机器上都要生成密码对:
在生成的过程中有几个选项让你输入密钥对的保存目录及输入私钥,直接enter(回车)就行了。
[root@mysqlcluster ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory ‘/root/.ssh’.
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:
0e:4c:ec:e3:04:98:b0:71:00:91:75:57:ee:56:a1:82 root@mysqlcluster

执行上一步会在~/.ssh目录下生成两个文件id_rsa和id_rsa.pub, 其中id_rsa是私钥,保存在本机;id_rsa.pub是公钥,是要上传到远程服务器的。

2、在每台服务器上生成密钥对后,将公钥复制到需要无密码登陆的服务器上:
举例如192.168.15.240,192.168.15.241,192.168.15.242这三台服务器需要做相互免密码登陆,在每台服务器生成密钥对后,在每台服务器上执行ssh-copy-id命令(具体说明及用法见最后附录),将公钥复制到其它两台服务器上(此处以192.168.15.240为例,用户为root,其它两台步骤相同)
#ssh-copy-id -i  ~/.ssh/id_rsa.pub root@192.168.15.241
#ssh-copy-id -i  ~/.ssh/id_rsa.pub root@192.168.15.242
以上命令,可以自动将公钥添加到名为authorized_keys的文件中,在每台服务器都执行完以上步骤后就可以实现多台服务器相互无密码登陆了
附ssh-copy-id介绍及用法:

Linux系统里缺省都包含一个名为ssh-copy-id的工具:

# type ssh-copy-id
ssh-copy-id is /usr/bin/ssh-copy-id

你用cat或者more命令看一下就知道ssh-copy-id本身其实就是一个shell脚本,用法很简单:

# ssh-copy-id -i ~/.ssh/id_rsa.pub user@server

再也不用记如何拼写authorized_keys这个文件名了,是不是很爽,可惜别高兴太早了,ssh-copy-id有一个很要命的问题,那就是缺省它仅仅支持SSH运行在22端口的情况,不过实际上出于安全的需要,我们往往都会更改服务器的SSH端口,比如说改成10022端口,这时候你运行ssh-copy-id就会报错了,直接修改ssh-copy-id脚本当然可以修正这个问题,但是那样显得太生硬了,实际上还有更好的办法:

# vi ~/.ssh/config

加上内容:

Host server
Hostname ip
Port 10022

你也可以单独只加入Port一行配置,那样就是一个全局配置,保存后再运行ssh-copy-id命令就不会报错了。

补充:如果端口不是22,不修改config文件,按如下方式也可以:

ssh-copy-id -i ~/.ssh/id_rsa.pub “-p 10022 user@server

最新文章

  1. 如何获取配置文件Web.config的AppSetting节点数据
  2. 深入浅出Windows Phone 8应用开发
  3. Android进阶笔记18:选用合适的IPC方式
  4. JavaScript基础篇最全
  5. java createSQLQuery().list()返回日期格式没有时分秒的解决方法
  6. ibdata1是?
  7. 递归解析XML
  8. [ACM] 九度OJ 1553 时钟
  9. 使用函数指针调用C++虚函数
  10. 团队项目必备神器——自定义Lint
  11. java 使用GET请求编码问题解决
  12. openSUSE安装Qt5
  13. 循环调用dll库的界面时,首次正常,再次无响应
  14. 【转】C++命名空间 namespace的作用和使用解析
  15. MariaDB CEO 痛斥云厂商从不回馈社区
  16. 30-算法训练 最短路 spfa
  17. 深入C# String类
  18. Android与Libgdx入门实例
  19. Windows Python+Eclipse环境配置
  20. 公司里面用的iTextSharp(教程)---关于PDF的属性设置

热门文章

  1. LeetCode 203. Remove Linked List Elements 移除链表元素 C++/Java
  2. 05 JS基础DOM
  3. Java反射讲解
  4. 解决jQuery和其他库冲突
  5. python的str.format方法
  6. 对java开发者来说比较好网站客推荐
  7. python练习题_04
  8. Linux 标准输入输出、错误输出、重定向标准输出
  9. Epson 微型打印机打印 LOGO C#
  10. kettle学习笔记及实践