ansible建立ssh密钥信任

发布于 2022-09-06 07:44:37 字数 591 浏览 16 评论 0

使用ansible批量部署服务的前提是建立免秘钥登录。
服务器较多时,一个一个手动使用ssh-copy-id建立免密钥登录也是不小的工作量。
怎样批量建立免密钥登录呢?

想法1
先在本机生成公钥,写个脚本使用ssh-copy-id进行,这里需要知道每个ip对应密码。

想法2
网上找来的

ansible init_hosts -m file -a "path=/root/.ssh owner=root group=root state=directory" -k
ansible init_hosts -m copy -a "src=authorized_keys dest=/root/.ssh/authorized_keys owner=root group=root mode=0644" -k

有如下报错?
clipboard.png

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

揪着可爱 2022-09-13 07:44:37

自问自答吧,这里,应该是使用脚本实现的。

够运 2022-09-13 07:44:37

expect+ssh-copy-id,前提知道每个ip和密码。

永不分离 2022-09-13 07:44:37

除了使用 ssh-copy-id 指令進行操作外,還可以使用 authorized_key module 來使用,底下附上先前帶 workshop 時寫的簡易 playbook。

$ vim push_ssh_pub_key.yml
---

# Push the ssh public key to managed nodes.
- name: ==> push the ssh public key ...
  hosts: all
  become: true
  vars:
    username: docker

  tasks:
    - name: create ssh key directory
      file:
        path: '/home/{{ username }}/.ssh/'
        state: directory
        owner: '{{ username }}'
        group: '{{ username }}'
        mode: 0700

    - name: set authorized key took from file
      authorized_key:
        user: '{{ username }}'
        state: present
        key: "{{ lookup('file', 'files/id_rsa.pub') }}"

# vim:ft=ansible:

https://github.com/chusiang/c...

如同 @phil 提到的,在還未傳入 ssh public key 之前,是需要先使用密碼登入的,屆時您第一次需使用類似以下的指令,來覆寫 username 和 password 才行。

$ ansible-playbook push_ssh_pub_key.yml -u <USERNAME> -kK
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文