使用 SSH 在多个远程主机上执行命令
项目描述
SSH 指挥官
此命令行界面(CLI) 工具允许您使用 SSH 协议在多个远程主机上执行各种命令。结果,您将获得您指定的每个命令的每个主机生成的输出。
您只需指定一个纯文本文件,其中包含要连接的远程主机列表(域名或 IP 地址),以及要在这些主机上执行的命令的逗号分隔列表。请注意,所有目标主机的访问凭据(用户和密码)必须相同!
亮点和特点
- 基于密钥的身份验证支持 (>= v0.3)
- 多线程会话 (>= v0.2)。
- 安装后几乎不需要设置!
- 易于使用的 CLI 语法。
- 彩色输出 (>= v0.2)!。
要求
确保您的系统满足以下要求:
- Python 3 (>= 3.7)
- paramiko(使用 v2.7.2 测试)
- colorama(使用 v0.4.4 测试)
- 彩色日志(使用v15.0测试)
安装
安装此工具的推荐方法是使用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_dsaid_ecdsaid_ed25519id_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-py3-none-any.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 2145c27f8c04b9e4249434140f9219dc328a0ee716f2fc13e4b70244df44b119 |
|
| MD5 | e04885cec2fafc66abfddb23911be8f0 |
|
| 布莱克2-256 | dfa68b4e4820183003c68a26f575e80e0fde09d45e4651bb03d891342b6dd20e |