同步远程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
您还可以显式指定user、hostname和port。 见下文。
如果服务器密钥以美元符号开头(例如$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将删除所有存在的密钥 除了那些在present和allow列表中的。
添加抽象服务器。让每个服务器从隐藏的 抽象服务器$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)
- 初次发布。