2016-04-19 6 views
1
のためのSSHキーを設定するには

シナリオ:hostsファイルの[クライアント]セクションに基づきは、新規ユーザー

は、次のようにします。

  1. チェックSSHログインの場合ユーザ "foo"が失敗し、そうであれば
  2. authorized_keyモジュールを使用してユーザ "foo"のSSH鍵を追加
  3. ユーザ "foo"は既にリモートマシン上に存在し、SSH公開鍵はローカル(不可能)ホスト

私はthis solutionを知っていますが、これはAnsibleコマンドラインを使用していますが、これをプレイブックに載せることができます。 sudoを含むパスワードを入力してスクリプトをインタラクティブにすることは許容されます。

今、私は第三者の役割を使って何をしたいのか考え出したGROG.authorized-keyしかし、それでも私は-Kスイッチでプレイブックを実行する必要があります。パスワードが必要な場合にのみプロンプトを表示する、Ansible(コマンドラインスイッチの横)には何かがありますか?

- hosts: clients 
    vars: 
    authorized_key_list: 
     - name: pdo 
     authorized_keys: 
     - key: "{{ lookup('file', '/home/pdo/.ssh/id_rsa.pub') }}" 
      state: present 
    roles: 
    - { role: GROG.authorized-key } 
+0

authorized_keyにはパスワードパラメータがありません。パスワードはどのようなものに適していますか?多分私はあなたを助けることができます。 –

+0

"authorized_key"がその仕事をすることができるように、ユーザーにパスワードを要求する必要があります。私はまた、コマンドラインパラメータとしてask-passを使用したくありません。 – Bostone

+0

これで、ユーザーまたはsudoの権限が必要ですか? becomeおよびbecome_userオプションを試してください。 –

答えて

1

私はあなたのコメントに基づいて、これは動作するはずだと思う:

- hosts: clients 
    become: true 
    tasks: 
    - name: Add authorized_key to pdo user on the remote client machine(s) 
    authorized_key: user=foo key="{{ lookup('file', '/home/pdo/.ssh/id_rsa.pub') }}" 

はなっパスワードの質問を取得するために-Kでそれを呼び出します。これにより、リモートマシン上でsudoコマンドが実行されます。それはあなたが必要とするものですね。

+0

リモートユーザがsudoerとして設定されていないため、これは失敗します。私はsudo特権を必要としないGROG.authorized-keyロール(updateを参照)を使ってこれをやっています – Bostone

0

GROGへの特別な称賛は、私が間違っていたことを理解する助けになりました。

基本的に私はrootの仕事をしようとしていましたが、Anonymousプレイブックをroot以外のユーザーとして実行していました。私は、次のbootstrap.ymlを作成し、このコマンドでそれを実行してしまった:

ansible-playbook ./bootstrap.yml -u root -k

これは

をrootパスワードプロンプトでrootとして、私の脚本を実行して、ユーザーを作成することができたとのsudoとパスワードなしのアクセスを確立します
--- 
# file: bootstrap.yml 
# Execute once as root user to create a public key and install it to your client machine(s) using the following command 
# ansible-playbook ./auth-client.yml -u root -k 

# This requires you to install GROG.management-user role from the Ansible Galaxy using this command: 
# ansible-galaxy install GROG.management-user 

# Add pdo user on remote machines 
- hosts: all 
    tasks: 
    - name: Add remote users 
    user: name=pdo group=users 

# Generate SSK keys at the localhost for pde user 
- hosts: localhost 
    tasks: 
    - name: Provision local pdo user 
    user: name=pdo generate_ssh_key=yes ssh_key_bits=2048 ssh_key_file=.ssh/id_rsa 

# Install public key into remote machine  
- hosts: all 
    vars: 
    authorized_key_list: 
     - name: pdo 
     authorized_keys: 
     - key: "{{ lookup('file', '/home/pdo/.ssh/id_rsa.pub') }}" 
      state: present 
    roles: 
    - { role: GROG.authorized-key } 

# Add sudo privileges for pdo user 
- hosts: all 
    roles: 
    - { role: GROG.sudo, become: yes } 
関連する問題