`
wb284551926
  • 浏览: 547500 次
文章分类
社区版块
存档分类
最新评论

多台linux服务器ssh相互无密码访问

    博客分类:
  • ssh
ssh 
阅读更多

转载:http://blog.csdn.net/educast/article/details/7174498

一、单向无密码访问

单向无密码访问远程服务器操作比较简单,比如服务器A需要无密码访问服务器B(A–>B),那么只需要在服务器A生成密钥对,将生成的公钥上传到服务器B的相关用户目录下的.ssh目录中(没有的话手动创建,注意,它的目录权限是700),并将公钥文件名称改为authorized_keys(注意,这个文件的权限应该是644),请注意.ssh目录及authorized_keys文件的权限,权限不符,会使配置无效。具体操作如下:

1、在需要无密码登录远程服务器的机器上(本例为服务器A)生成密码对:
在生成的过程中有几个选项让你输入密钥对的保存目录及输入私钥,直接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、上传公钥到需要无密码登陆的远程服务器B上并改名为authorized_keys:
远程服务器B上如果没有.ssh目录的话,先手动创建:
[root@www1bak ~]# mkdir .ssh
[root@www1bak ~]# chmod 755 .ssh

然后从服务器A上传公钥文件到远程服务器B:

[root@mysqlcluster ~]# scp .ssh/id_rsa.pub root@192.168.15.234:/root/.ssh/authorized_keys
The authenticity of host ’192.168.15.234 (192.168.15.234)’ can’t be established.
RSA key fingerprint is c9:ef:0c:1b:ac:6c:ef:84:a4:a7:e5:d1:20:58:c8:73.
Are you sure you want to continue connecting (yes/no)? yes                              
Warning: Permanently added ’192.168.15.234′ (RSA) to the list of known hosts.    //这一步会将远程服务器B加入到本机(服务器A)的known_hosts列表中
root@192.168.15.234′s password:
id_rsa.pub                                                                                        100%  399     0.4KB/s   00:00

3、测试

上传完公钥文件到远程后,马上从服务器A登陆到服务器B,如果没有输入密码登陆到了服务器B,表示成功,如果还要输入密码,则请检查远程服务器B上的.ssh目录权限是否为700,上传的远程服务器上的公钥名是否改为了authorized_keys,权限是否为644

 

 

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

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

1、在每台服务器上都执行ssh-keygen -t rsa生成密钥对:
#ssh-keygen -t rsa

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

分享到:
评论

相关推荐

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

    ### 多台Linux服务器相互无密码访问实现方法 在企业级应用环境中,为了提高效率、减少重复性劳动,实现多台Linux服务器之间的无密码访问变得尤为重要。本文将详细介绍如何通过SSH密钥对的方式,在多台Linux服务器...

    服务器Centos集群上实现ssh无密码相互访问

    为了实现无密码访问,需要将每台服务器的公钥添加到其他服务器的授权公钥列表中。具体操作如下: - 在master节点上执行以下命令,将master节点的公钥发送到其他节点: ```bash scp ~/.ssh/id_rsa.pub hadoop@...

    Linux系统下如何做到SSH免密码登录

    二、多台服务器相互无密码访问 1. 生成密钥对:在每一台需要相互免密码登录的服务器上,都要运行`ssh-keygen -t rsa`生成密钥对。 2. 复制公钥:每台服务器的公钥需要被复制到其他所有服务器的`.ssh/authorized_...

    linux ssh 使用深度解析(key登录详解)

    SSH 协议由IETF的Network Working Group制定,旨在替代如telnet和R系列命令这类明文传输密码的不安全远程访问方式。SSH1和SSH2是两个主要版本,SSH2更安全且兼容SSH1。在开源领域,OpenSSH是最常见的SSH实现,广泛...

    shell自动化部署批量建立用户和批量SSH配置

    标题中的“shell自动化部署批量建立用户和批量SSH配置”指的是使用Linux Shell脚本来自动化创建多个用户账户,并且配置这些用户可以使用SSH进行无密码登录。这个过程在IT运维中非常常见,特别是在设置服务器集群或者...

    ssh免密登录

    SSH免密登录配置是在Linux环境下配置服务器间的无密码访问,以实现自动化脚本执行、服务之间的安全通信等。在Hadoop环境搭建中,免密登录是常用的配置步骤,因为Hadoop集群中的多个服务组件(如NameNode、DataNode)...

    SSH(1).rar_lin

    5. **批量管理**:通过SSH配置文件(如`~/.ssh/config`),可以简化管理多台服务器的操作。 在实际使用中,理解并熟练掌握SSH能极大地提高Linux系统管理的效率和安全性。正确配置和使用SSH是每个Linux系统管理员...

    linux redhat下异地备份

    - 如果有多个服务器需要相互之间实现无密码访问,则将各服务器的`id_rsa.pub`内容追加到`authorized_keys`文件中即可。 **第三步:测试连接** - 在服务器A上使用`ssh root@192.168.1.188`尝试登录服务器B,如果...

    在Linux上实现异地全自动备份.pdf

    在data上,将公钥内容追加到`.ssh/authorized_keys`文件,使得bak可以通过ssh无密码访问data。 接下来,为了实现无密码登录,需要在data上修改`/etc/ssh/sshd_config`配置文件,关闭密码登录(`...

    关于大数据Hadoop的服务器配置文档

    **1.3 SSH无密码访问配置** 为了实现集群之间的无密码SSH登录,我们需要进行以下步骤: **1.3.1 生成公钥和私钥** 在每个节点上运行以下命令生成公钥和私钥: ```bash ssh-keygen -t rsa ``` **1.3.2 配置授权...

    Linux资料共享

    这些工具和命令可以帮助用户在本地和远程Linux服务器之间安全高效地传输文件。 Linux系统管理部分包含了许多系统维护的基础知识点,例如注销、重启和关机的命令。注销用户可以使用exit、logout命令,或者是按下Ctrl...

    Python实现Windows和Linux之间互相传输文件(文件夹)的方法

    ### Python 实现 Windows 和 Linux 之间的文件(文件夹)互传方法详解 #### 背景及需求 在跨平台开发或运维过程中,经常会遇到需要在 Windows 和 Linux 系统间传输文件的需求。例如,在一个典型的项目场景中,可能...

    Linux单机环境下HDFS伪分布式集群安装操作步骤v1.0.pdf

    10. 配置SSH免密登录:由于Hadoop集群中各个节点需要相互通信,配置SSH免密登录可以避免在通信时需要手动输入密码,提高集群的运行效率。 11. 格式化NameNode:在启动HDFS之前,需要格式化NameNode,这是因为HDFS在...

    最简单的远程相互控制

    使用强密码、加密连接(如VNC over SSH隧道)以及限制特定IP地址的访问可以提高安全性。 4. 功能特性: - 屏幕共享:ttvnc可能支持实时的屏幕同步,让用户看到远程计算机的实时桌面。 - 文件传输:某些VNC实现...

    云计算分布式平台搭建实验指导书和试做报告9个.rar

    配置SSH实现节点间无密码访问 配置网络文件系统NFS MPICH编译运行 3.安装并配置两台ESXI服务器 安装并配置一台openfiler虚拟机 安装并配置vCenter 登录vCenter并挂载ESXI 连接openfiler存储 在openfiler存储上装系统...

    linux下基于用户的虚拟主机的设计与实现.doc

    - 基于用户的虚拟主机:每个用户拥有独立的web空间,这种设计允许用户在服务器上托管他们的个人网站,而不会相互干扰。 - 空间分配:每个用户分配50MB的空间,这涉及到磁盘配额的设置,确保用户不能超出预设的磁盘...

    GNU SSH Server-开源

    SSH客户端与SSH服务器是相互配合工作的。GSSHD能够与大多数SSH客户端兼容,这意味着用户可以使用常见的SSH客户端工具(如OpenSSH客户端、PuTTY等)来连接到GSSHD服务器,进行远程操作和管理。 开源软件的标签意味着...

    Linux环境Hadoop2.6+Hbase1.2集群安装部署

    为了让Hadoop集群中的各节点之间能够无障碍通信,需要配置SSH免密码登录。这一步骤对于搭建伪分布和全分布模式的集群至关重要: ``` ssh-keygen -t rsa ssh-copy-id -i ~/.ssh/id_rsa.pub <目标IP> ``` **3.1.3 ...

    Hadoop2.6.4集群搭建(初学)

    以上步骤详细地介绍了如何搭建一个基于 CentOS 6.5 的 Hadoop 2.6.4 集群的基础环境配置,包括服务器名称的配置、SSH 无密码访问的配置以及 JDK 的安装。这些步骤是搭建 Hadoop 集群的基础,对于初学者来说尤为重要...

Global site tag (gtag.js) - Google Analytics