linux - 如何从 bash shell 通过 SSH 连接到多个服务器并提供完整登录?

标签 linux bash ssh

<分区>

这似乎是一个非常受欢迎的问题,根据您查看的论坛,这个问题有大约 1,000 个不同的答案。不幸的是,没有一个对我有用。

我正在尝试编写一个 bash shell 脚本,通过 SSH 连接到服务器列表并运行一个简单的 stop <x> service命令关闭每台机器上的应用程序服务器。

要手动执行此操作:

ssh user@server01.ourdomain.tld
user@server01.ourdomain.tld's password: ourpassword
Last login: Fri Nov 30 14:37:51 2012 from <some-ip-addr>
server01:[user@machinename ~]# (now we are SSHed in)

所以我问:给定一组服务器名称(server01server25),我如何编写 bash 脚本以通过 SSH 连接到所有服务器并运行 service ourservice stop ?此脚本一旦启动就不需要任何人工交互,因此应该为 SSH 命令提供适当的密码 (ourpassword) 以供使用。此外,我需要在脚本通过 SSH 进入每个服务器后正确退出(或关闭连接),这样我们就不会挂起资源(打开连接等)。提前致谢。

最佳答案

这样做

  1. 使用 ssh-keygen 命令为自己设置公钥/私钥对
  2. 将您的私钥保存在所有服务器中的 .ssh/authorized_keys 文件夹中

现在您无需输入密码即可连接到任何服务器,这是我们的首要目标。

现在您可以使用以下语法向您的服务器发送命令:

ssh username@serverid 'command'

关于这个 at this page 的简短描述很好.

因此,您只需将 25 个命令连接到一个文件中并启动它,如下所示:

ssh user@server1.yourservers.com 'service ourservice stop'
ssh user@server2.yourservers.com 'service ourservice stop'

关于linux - 如何从 bash shell 通过 SSH 连接到多个服务器并提供完整登录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13670638/

相关文章:

linux - 创建一个基本的 .bashrc 文件

c++ - '/usr/include/c++/4.4/bits/'中的位是什么意思

bash - gpg 仅加密文件夹中的某些文件

hadoop - EMR集群如何连接JobTracker

docker - 无法通过 ssh 登录 docker

ssh - 当前是否可以在( headless (headless)模式)*(无需安装*)安装新软件的情况下将{Raspberry Pi}设置为[Wifi热点]?

linux - 如果 shell 只显示几行,如何复制和粘贴 SQL 脚本?

linux - 使用 awk 查找可变长度的正则表达式并根据找到的长度编辑以下行

bash - 从 bash 脚本采购时如何保持冗长

linux - 如何在我的 shell 脚本中包含 html?执行 shell 脚本时可以得到 html 格式的输出吗?