C堡垒的命令行接口

cbas的Python项目详细描述


Travis build status imageCoverage statusVersion

About

这是 *c-bastion* jump host。 它允许您上传一个ssh密钥文件并在跳转主机上创建一个用户,因此 你可以登录它。它需要一个初始连接来验证服务器 获取(open id connect)访问令牌。

基本流程如下:

+-----------------+  +-----------------+  +-----------------+
|                 |  |                 |  |                 |
|    developer    |  |    jump host    |  |   auth server   |
|                 |  |                 |  |                 |
+--------+--------+  +--------+--------+  +--------+--------+
         |                    |                    |
         +----------------------------------------->
         | request token      |                    |
         <-----------------------------------------+
         | receive token      |                    |
         |                    |                    |
         +-------------------->                    |
         | upload key         +-------------------->
         |                    | validate token     |
         |                    <--------------------+
         <--------------------+                    |
         | upload OK          |                    |
         |                    |                    |
         +-------------------->                    |
         | ssh log in         |                    |
         |                    |                    |
         |                    |                    |
         |                    |                    |
         +                    +                    +

其中,developer是本地计算机(台式机、笔记本电脑等)auth server是身份验证服务器,jump host是跳转主机。cbas接受 注意获取令牌并上传ssh密钥。

Install

使用python标准,例如:

$ pip install cbas

Quickstart

  1. 安装软件。

  2. 向你的一位同事索要auth-hostclient-secretjump-host参数。

  3. 然后运行以下命令上载密钥:

    $ cbas -a <AUTH-host> -s <CLIENT-SECRET> -h <JUMP-HOST> upload
    ...
  4. 那么您应该能够登录,使用:

    $ ssh <JUMP-HOST>
    ...

Usage

$ cbas --help
Usage: cbas [OPTIONS] COMMAND [ARGS]...

Options:
  -v, --verbose                   Activate verbose mode.
  -c, --config <config_path>      Path to config file. Default: '~/.cbas'.
  -u, --username <username>       Username. Default: the logged in user.
  -k, --ssh-key-file <key-file>   SSH Identity to use. Default:
                                  '~/.ssh/id_rsa.pub'.
  -p, --password-provider <provider>
                                  Password provider. Default: 'prompt'.
  -s, --client-secret <secret>    Special client secret, ask mum.
  -a, --auth-host <host>          Auth-server host.
  -h, --jump-host <host>          Jump host to connect with.
  --version                       Print version and exit.
  --help                          Show this message and exit.

Commands:
  delete  Delete user.
  dry_run Dry run, sanitize all config only.
  upload  Upload ssh-key and create user.

选项

详细
此开关激活详细输出,在调试时非常有用
配置
配置文件的路径。注意,因为我们正在使用 yamlreader包,这个可以 同时也是一个包含多个配置文件的目录。而且,配置是在yaml中 语法,见下文。
用户名
与身份验证服务器通信时的用户名。请注意 返回的令牌包含经过身份验证的用户名,该用户名随后 发送到跳转主机。因此您将无法创建任意用户 在跳转主机上
ssh密钥文件
指向publicssh密钥文件的路径。这将上载到跳转主机。
密码提供程序
从何处获取密码。有效值是promptkeyring (和testing)。prompt将始终要求输入密码,而 keyring只询问一次,然后将密码存储在系统中 钥匙圈。
验证主机
验证服务器的主机名。例如auth-server.example。(注意,通过 默认情况下,这将使用https://作为方案,/oauth/token作为 端点。但是,请解释url,例如http://auth-server.example和 显式终结点,例如auth-server.example/special/id/auth是 允许。)
客户端机密
与 验证服务器。
跳转主机
跳转主机的主机名。例如jump-host.example。(注意,通过 默认情况下,这将使用https://。但是,请解释URL,例如 http://jump-host.example是允许的。)
版本
显示版本号并退出.< /dd>
帮助
显示帮助和退出。< /DD>

子命令

上传
上载ssh密钥文件并创建用户。
干运行
清除并聚合配置文件和命令行中的所有选项。不要 连接到任何内容。
删除
再次删除您的用户。例如:如果上载了错误的ssh密钥文件。

Config-File

cbas配备了强大的配置机制。所有相关的 可以在命令行上提供的参数也可以在 配置文件,例如:

username:acid_burnssh-key-file:~/.ssh/mykey_rsa.pubauth-host auth-server.exampleclient-secret:mysupersecretpassword-provider:keyringjump-host:jump-host.example

请注意,在命令行上提供的任何参数都将采用 优先于通过配置文件提供的那些。如果有疑问,请尝试使用 --verbose开关。

License

版权所有2016 Immobilien Scout GmbH

根据apache许可证2.0版(以下简称“许可证”)授权;您不能使用 此文件与许可证不符。您可以获得 许可证位于

http://www.apache.org/licenses/LICENSE-2.0

除非适用法律要求或书面同意,否则软件将被分发 根据许可证,是按“原样”分发的,没有保证或 条件任何形式,无论是明示的还是默示的。查看许可证 管理许可下的权限和限制的特定语言。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java错误:无法解析方法   如何用相同的父标记和子标记在Java中解析XML?   日期使用Java中的时区偏移将本地时间转换为UTC   java如何在多进程、多线程环境中读取文件   WebView中的java弹出式对话框不在当前显示范围内,但在chrome浏览器中运行良好   只有2个参数的java递归二进制搜索方法   无法在java中调用函数   java JavaMail在Tomcat服务器上运行时停止工作   反射通过java程序生成、编译和运行java类   java Android:如何使ListView即使在应用程序关闭后仍保持禁用状态   在JAVA中识别匿名类实例   java渲染一个由三角形组成的立方体,在旋转时会产生奇怪的角度   函数式编程如何基于比较连续的列表元素将Java流减少为布尔值   java如何替换列表中的多个项目?   java Android如何获取随机sqlite数据?   java我已经将useSSL设置为false,但仍然收到警告   java使用动态变量生成jlabel   apachespark:java。lang.NoClassDefFoundError v2TableWithV1回退