拷贝ssh公钥到多台服务器上

这篇文章几乎是对Push SSH public keys to multiple
host
的翻译,谢谢该作者。

使用SSH登陆、执行命令到远程机器需要输入密码,很多系统需要免输密码访问远程机器,比如hadoop主节点访问子节点时,这时可以使用ssh-copy-id命令将公钥拷贝到远程机器上,
比如:
ssh-copy-id -i
[email protected]

但如过面临很多机器,比如5,6,7,8台以上,一般会想到写个脚本,批量执行,但ssh-copy-id命令执行过程中有两处需要人工参与,

一是当你看到如下提问时,必须对每台机器回答yes
or no,

The authenticity of host ‘myfirsthost.work.cainmanor.com
(10.256.33.106)‘ can‘t be established.

RSA key fingerprint
is fc:40:7c:de:b8:ac:a2:f5:d4:11:d0:0e:b2:77:8a:63.

Are you
sure you want to continue connecting (yes/no)?
yes


二是每台机器的密码,当你ssh-copy-id到每台机器时,需要输入访问这台机器的密码,

为了解决第一个问题,可以修改~/.ssh/config文件(没有则创建),把下面两行增加到该文件中,

StrictHostKeyChecking
no

UserKnownHostsFile=/dev/null

在完成所有SSH拷贝动作后,记得用#号键注释掉(不注释也没事。。。)。

为了解决第二个问题,可以使用sshpass工具,该工具可能需要下载,我在Centos上需要手动下载rpm包安装。sshpass为ssh提供所需的密码,可以执行如下命令,

sshpass
-p ‘PASSWORD‘ ssh-copy-id
[email protected]


实际操作时,会把上面这条命令放到像下面这样的脚本文件里,并提供hosts文件,hosts文件记录所有需要拷贝公钥的机器,

for
X in `cat hosts`

do
sshpass -p
‘PASSWORD‘ ssh-copy-id
[email protected]${X}

done

hosts文件记录host信息这种模式在批量执行ssh命令很常见。

在完成SSH公钥拷贝后,可以选择pssh工具批量执行命令。

时间: 2024-10-27 06:46:11

拷贝ssh公钥到多台服务器上的相关文章

实现在同一台服务器上登录的ssh用户的群聊(聊天室)功能

直接上代码了,注释还算清晰,有问题欢迎提问指证. 为方便下载编译,代码都放到一个文件里了. 服务器是CentOS,客户端用的secureCRT. /* 功能: 在同一台服务器上ssh登录的用户可以群聊(聊天室) 原理:<span style="white-space:pre"> </span>1.通过roomNo.来区分不同的房间或群组: 2.以roomNo.作为key来创建一块共享内存,来保存进入到该room的用户列表: 3.用户以ssh(或其它方式)登录到服

【 Linux 】单台服务器上并发TCP连接数

单台服务器上并发TCP连接数    问题:一台服务器到底能够支持多少TCP并发连接呢? 1. 文件描述符限制:    对于服务器来说,每一个TCP连接都要占用一个文件描述符,一旦文件描述符使用完,新的连接到来返回给我们的错误是"Socket/File:Can't open so many files" 这时,你需要明白操作系统可以打开最大文件数的限制. 进程限制(用户限制):            执行 ulimit -n 输出1024,说明对于一个进程而言最多只能打开1024个文件,

网络编程释疑之:单台服务器上的并发TCP连接数可以有多少

曾几何时我们还在寻求网络编程中C10K问题的解决方案,但是现在从硬件和操作系统支持来看单台服务器支持上万并发连接已经没有多少挑战性了.我们先假设单台服务器最多只能支持万级并发连接,其实对绝大多数应用来说已经远远足够了,但是对于一些拥有很大用户基数的互联网公司,往往面临的并发连接数是百万,千万,甚至腾讯的上亿(注:QQ默认用的UDP协议).虽然现在的集群,分布式技术可以为我们将并发负载分担在多台服务器上,那我们只需要扩展出数十台电脑就可以解决问题,但是我们更希望能更大的挖掘单台服务器的资源,先努力

在同一台服务器上配置多个Tomcat

. 在同一台服务器上配置多个Tomcat,布布扣,bubuko.com

windows下同一台服务器上装有两个ORACLE数据库实例,通过命令启停数据库

同一台服务器上装有两个ORACLE数据库实例,通过命令启停数据库,如何区分操作的是哪个数据库实例?操作如下: 1.在命令行 set oracle_sid=one_实例   //先修改环境变量,这一步等于切换了数据库实例 sqlplus /nolog    connect /as sysdba    shutdown 或者 2.连接的时候 sqlplus user/[email protected] as sysdba    //也可以指定 shutdown immediate select in

在一台服务器上部署多个Tomcat

在一台服务器上配置多个Tomcat的方法: 这几天由于在研究OGSA-DQP,但是其网站上只提供了在Linux下的安装文档,而且需要在一天服务器上配置两个Tomcat,但是我一直没有弄懂怎么在Windows下实现. 如果要在一台服务器上配置多个Tomcat,主要就是要避免Tomcat服务器的端口冲突的问题.只需要修改CATALINA_HOME\conf\server.xml中的启动端口和连接端口就OK了! 下面我们把配置的详细过程写在下面,以供参考:(此例以配置两个Tomcat为例) 1. 下载

SqlServer A库与B库在同一台服务器上

方法1: insert into A.dbo.users(field1,field2,field3) select * from B.dbo.users 注:同一服务器,A和B为不同的数据库,如表中有自动标示,可先把自动标示取消,再执行. 方法2: a.将数据库A中的表dbo.users复制到数据库B,需要进行第一步:右击—>编辑表脚本—>CREATE到—>新查询编辑窗口,把内容复制! b.在查询中,选择数据库B,右键选择[新建查询],然后,粘贴进来上面复制的代码.记得把use B那一行

Microsoft Dynamics CRM 2011 面向Internet部署 (IFD) ADFS虚拟机环境搭建的步骤(CRM与ADFS装在同一台服务器上) 摘自网络

1: 安装windows server 2008 R2 中文版 (过程略) 安装完成后设置机器名和IP地址, 本过程机器名 crm5dev,192.168.0.110 dns: 192.168.0.110(本机) Administrator/[email protected] 2: 通过服务器管理器添加域服务,配置域服务器域名为crm5.lab. 注意:使用高级模式安装. 说明:服务器是windows server 2003 那么就选windows server 2003 服务器是windows

如何在多台服务器上共享Session(PHP/JSP/ASP.NET)以及单点登录(SSO)

如何在多台服务器上共享Session(PHP/JSP/ASP.NET)以及单点登录(SSO) Apache Session复制: http://tomcat.apache.org/tomcat-6.0-doc/cluster-howto.html 使用Memcached来共享PHP Session: https://www.digitalocean.com/community/tutorials/how-to-share-php-sessions-on-multiple-memcached-se