Skip to main content

使用 SSH 在多个远程主机上执行命令

项目描述

SSH 指挥官

命令行界面(CLI) 工具允许您使用 SSH 协议在多个远程主机上执行各种命令。结果,您将获得您指定的每个命令的每个主机生成的输出。

您只需指定一个纯文本文件,其中包含要连接的远程主机列表(域名或 IP 地址),以及要在这些主机上执行的命令的逗号分隔列表。请注意,所有目标主机的访问凭据(用户和密码)必须相同!

亮点和特点

  • 基于密钥的身份验证支持 (>= v0.3)
  • 多线程会话 (>= v0.2)。
  • 安装后几乎不需要设置!
  • 易于使用的 CLI 语法。
  • 彩色输出 (>= v0.2)!。

要求

确保您的系统满足以下要求:

安装

安装此工具的推荐方法是使用pip

pip install ssh-commander

用法

使用时ssh-commander,请遵守以下语法:

usage: ssh-commander [-h] [-p [PORT]] [-i IDENTITY_FILE] [-T] [-v]
                     FILE USER COMMANDS

Excecute commands on several remote hosts, with SSH.

positional arguments:
  FILE                  Plain text file with list of hosts
  USER                  User to login on remote hosts
  COMMANDS              Comma separated commands to be executed on remote
                        hosts

optional arguments:
  -h, --help            show this help message and exit
  -p [PORT], --port [PORT]
                        Specify SSH port to connect to hosts
  -i IDENTITY_FILE, --identity_file IDENTITY_FILE
                        Public key auth file
  -T, --trust_unknown   Trust hosts with no entries at known_hosts file 
  -v, --version         Show current version

设置您的目标主机

首先,请记住创建一个文本文件(随意命名),在其中列出目标主机。它的内容,可能如下所示:

# This is a comment. It'll be ignored!.
192.168.0.10
192.168.0.11
192.168.0.12

验证

从 v0.3 开始,ssh-commander支持以下认证方式

  • 基于密码的身份验证。
  • 基于 SSH 密钥的身份验证。

在这方面,ssh-commander试图模仿OpenSSH 客户端的默认行为。实际上,这意味着:

  • 如果在 找到任何有效的密钥文件~/.ssh/,它将在所有目标主机上尝试基于密钥的身份验证!。
  • 如果没有找到或提供有效的密钥文件,您将被要求输入密码,用作所有远程主机的身份验证方法

在任何情况下,SSH 密钥或提供的密码都应该在所有目标主机上都有效,以便进行身份验证!。

基于密码的身份验证

仅当在默认位置 ( ) 未找到以前的有效密钥文件时才会提示密码。使用 基于密码的身份验证时,请注意后者只会被询问一次。因此,请记住,这些凭据应该在所有目标主机上都有效!~/.ssh/

基于 SSH 密钥的身份验证

如前所述,首先,将通过在 目录中查找有效密钥ssh-commander来尝试基于密钥的身份验证。~/.ssh/

查找以下类型的键:

  • id_dsa
  • id_ecdsa
  • id_ed25519
  • id_rsa

可以使用-iCLI 选项指定备用密钥文件位置!。

已知主机验证

默认情况下,ssh-commander将查看~/.ssh/known_hosts文件并检查每个目标主机中是否有匹配的条目。如果没有,它会警告您并要求明确确认您是否信任这些主机中的每一个!。

请注意,如果您对信任确认做出否定回答,则不会执行任何操作,并且程序会以通知退出。

如果您不希望执行此验证,您可以使用-T选项,盲目信任远程主机!。

例子

假设您有一些托管交换机(或路由器):

ssh-commander hosts.txt root "terminal length 0, sh port-security"

它们也可能是一些 GNU/Linux 服务器:

ssh-commander hosts.txt foones "hostname, whoami"

不要针对known_hosts文件验证远程主机:

ssh-commander -T hosts.txt foones "hostname, whoami"

为基于密钥的身份验证指定替代 SSH密钥文件位置:

ssh-commander -i ~/ssh_keys/id_rsa hosts.txt foones "hostname, whoami"

执照

该程序在 GPLv3 下获得许可。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

ssh-commander-0.3.tar.gz (7.9 kB 查看哈希

已上传 source

内置分布

ssh_commander-0.3-py3-none-any.whl (22.0 kB 查看哈希

已上传 py3