同步远程ssh授权的密钥

claviger的Python项目详细描述


克拉维格

claviger为您管理ssh authorized_keys文件。

快速介绍

告诉claviger要将哪些密钥放在哪个服务器上 通过创建~/.claviger-文件。示例

keys:laptop:ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINYZEwjtu8w9Hsvx85TlYE95MLV9Whc3N1ajrH7+gu7Adesktop:ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICUef9frJIX7tjvZkYYMtr4IdD/GcKz6/X5qvLxM1Z8O desktopwork:ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICrycv44eyFwWJ7QQsGOnjEiAsFSdxIoAEzBPSO/AQB5 workservers:myprivateserver.com:user:myusernamepresent:-laptop-desktoproot@myotherserver.com:like:myprivateserver.compresent:-workkeepOtherKeys:falseworkuser@workserver.com:present:-work-desktopabsent:-laptop

然后运行claviger。默认情况下claviger只告诉哪些更改 它想做,但做不到。如果变化看起来不错, 运行claviger -f,这允许claviger进行更改。

安装

要安装claviger,只需运行:

pip install claviger

claviger配置文件

一个.claviger是用YAML写的。它由两个映射组成:thekeys 地图和servers地图。

servers:server_key:# ... (server stanza)server_key2:# ... (server stanza)keys:key_name:# ... (ssh public key)key_name2:# ... (ssh public key)

如上面的示例所示,keysmap具有as值ssh 在authorized_keys文件中出现的公钥。

servers映射由键节对组成。每一节都是一张地图 选项名称/值对,例如:

server_key:option_name:option_valueoption_name2:option_value# ...

有关服务器节中的可用选项,请参见下面的内容。

服务器键

服务器节的键格式如下:

[user@]hostname[:port]

键的示例如下

  • just-a-hostname.nl
  • user@some-server.com
  • some-server.nl:1234
  • user@and-port.com:22022

您还可以显式指定userhostnameport。 见下文。

如果服务器密钥以美元符号开头(例如$work), 然后它被认为是abstract-见下文。

服务器节

服务器节是一个映射,它可能包含以下条目。

^{tt25}$
The name of the server.
Default: stanza key.
^{tt21}$
The hostname of the server.
Default: derived from stanza key.
^{tt20}$
The user for which to manage the ^{tt2}$ file
Default: ^{tt29}$ if not derived from stanza key.
^{tt30}$
A list of key names that must be in the ^{tt2}$ file.
Default: the empty list ^{tt32}$
^{tt33}$
A list of SSH-keys that should be removed from the ^{tt2}$ file.
Default: the empty list ^{tt32}$
^{tt36}$
^{tt37}$ or ^{tt38}$. If set to ^{tt38}$, ^{tt1}$ will remove all keys not explicitly allowed form the ^{tt2}$ file.
Default: ^{tt37}$.
^{tt43}$
A list of SSH-keys that are also allowed to be in the ^{tt2}$ file if ^{tt36}$ is set to ^{tt38}$. These keys will not be added, if not present already.
Default: the empty list ^{tt32}$
^{tt48}$
Name of another server stanza. If set, the entries of the other server stanza will be used as default values for this server stanza.
Default: ^{tt49}$
^{tt50}$
The user to use to get and put the ^{tt2}$ file.
Default: the same as ^{tt20}$
^{tt22}$
The port to use to connect to the server.
Default: 22.
^{tt24}$
^{tt37}$ or ^{tt38}$. If set to ^{tt37}$, ^{tt1}$ will not check this server. See below.
Default: ^{tt38}$

抽象服务器和$default

claviger不会检查抽象服务器。这有助于清洁 配置多个服务器。

servers:$mine:keepOthers:falsepresent:-my_first_key-my_second_key$work:present:-my_work_keyabsent:-my_first_keymy-first-server.tld:like:$minemy-second-server.tld:like:$minealpha.at-work.tld:like:$workbeta.at_work.tld:like:$work

默认情况下,服务器从隐藏的$default抽象服务器继承。

servers:$default:user:mynamepresent:-this_key_is_put_everywherehost1.tld:# will use myname as userhost2.tld:# "root@host3.tld# will use root as userhost4.tld:absent:-this_key_is_put_everywhere# except here

Claviger变更日志

0.2.1(2016-03-15)

  • 向jsonschema添加缺少的依赖项。(感谢:joost rijneveld)
  • 正确解码scp的输出。(感谢:joost rijneveld)

0.2(2016-01-14)

  • allow-list添加到服务器节。

    如果keepOtherKeys设置为false,claviger将删除所有存在的密钥 除了那些在presentallow列表中的。

  • 添加抽象服务器。让每个服务器从隐藏的 抽象服务器$default

  • 允许

    servers:server1:server2:

    servers:server1:{}server2:{}
  • 错误修复:实际使用name选项设置服务器名。

0.1.2(2016-01-08)

  • 显示实际删除的键的正确数目。

0.1.1(2015-12-21)

  • 一些表面上的变化。
  • 如果尚未配置claviger,则显示示例配置文件。
  • python 3兼容性。

0.1.0(2015-12-14)

  • 初次发布。

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

推荐PyPI第三方库


热门话题
java在Hibernate中从两个具有不同功能的表(postgreSQL)映射一个实体   java jfreechart需要自定义Y轴,以便打印   Java:从外部获取类。罐子   java如何获取Appium服务器日志   具有完全相同内容的java重写函数会导致错误   java消息的类路径是什么。属性(如果在依赖项jar中)   循环/相等的java问题==   java如何使用ionic cordova angularjs将所选图像发送到spring controller以保存到服务器?   库中的java语言环境数据   java从JSON webservice检索安卓中的字节[]   调试如何从Java中的类调试方法?   java将日期字符串切割成变量   无法使用java附加到文件?