首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >盐栈。如何为每个服务器每个用户创建ssh密钥并进行交换

盐栈。如何为每个服务器每个用户创建ssh密钥并进行交换
EN

Stack Overflow用户
提问于 2015-09-14 15:37:58
回答 1查看 3.3K关注 0票数 3

如何在安装过程中为每个服务器的用户创建ssh私钥和公钥,然后为不同服务器上的不同用户添加新创建的公钥?

例如:

服务器1

  • user1在authorized_keys - server1(user2,user3),server2(user1,user2,user3)中有公钥。
  • user2在authorized_keys - server1(user1,user3),server2(user1,user2,user3)中有公钥。
  • user3在authorized_keys - server1(user1,user2),server2(user1,user2,user3)中有公钥。

服务器2

  • user1在authorized_keys - server1(user1,user2,user3),server2(user2,user3)中有公钥。
  • user2在authorized_keys - server1(user1,user2,user3),server2(user1,user3)中有公钥。
  • user3在authorized_keys - server1(user1,user2,user3),server2(user1,user2)中有公钥。

我知道如何创建密钥(公共的、私有的),但是如何在服务器、两个或更多服务器之间交换这些密钥呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-16 16:51:43

如果查看文档,就会发现ssh_auth.present状态。auth.present

为了动态填充授权密钥,我使用支柱数据作为真相的来源。为了确保用户和他或她的公钥位于适当的服务器上,我将使用salt状态,如下例所示:

cat /srv/salt/server_users.sls

代码语言:javascript
复制
{% set users = pillar.get('server_users') %}

{% for user in users %}

{{ user }}_setup:
  user.present

{{ user }}_sshkey:
  ssh_auth.present:
    - source: salt://pubkeys/{{ user }}.pub
    - user: {{ user }}

{% endfor }}

然后,我将所有用户的公钥放到/srv/salt/pubkeys/目录中。

此时,我设置了平面文件柱或外部支柱,它将为每个服务器提供一个server_users的柱状键,其值是我希望在该特定服务器上存在并部署ssh密钥的用户列表。

一个平面文件柱的例子应该是这样的。

cat /srv/支柱/top.sls

代码语言:javascript
复制
base:
  'server01':
    - users.server01
  'server02':
    - users.server02

cat /srv/支柱/用户/server01.sls

代码语言:javascript
复制
server_users:
  - sarah
  - joe
  - kari
  - kanchan

cat /srv/支柱/用户/server02.sls

代码语言:javascript
复制
server_users:
  - kanchan
  - john
  - sumit

因此,在本例中,kanchan可以访问这两个服务器,而其他用户只能访问其中一个服务器。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32568714

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档