Ssh
ssh-copy-id 與密碼在一行中,可能嗎?
我正在嘗試在 Ansible 中設置一個自動化腳本來設置新伺服器,並且我正在使用
ssh-copy-id
將 Ansible 主伺服器添加到新伺服器的授權 ssh 密鑰中。我創建了一個使用 的腳本
ssh-copy-id
,但該命令要求輸入新伺服器的密碼。是否可以在呼叫它的同一行中給它該密碼,以便我可以在腳本中自動化它?
這是我用來在沒有已知 ssh 密鑰的情況下配置新 Debian 主機的方法。主機需要安裝
python
並python-apt
安裝此劇本才能開箱即用。如果您想在虛擬機上測試它,您可以使用引導參數執行 Debian 安裝程序url=drybjed.github.io
- 安裝程序將下載一個預置文件python
並python-apt
選擇包(以及其他)。安裝後,root賬號預設密碼為debian
,首次登錄時強制修改。安裝並首次登錄後:
- 確保您可以使用密碼 ssh 進入 root@host(接受主機指紋等)。
- 創建
init.yml
:hosts: all user: root sudo: no tags: init vars: - ssh_user: $ENV(USER) tasks: - name: INIT | Create admin system group group: name=admins system=yes state=present tags: init - name: INIT | Create admin account from current user user: name=$ssh_user state=present shell=/bin/bash groups=admins tags: init - name: INIT | Make sure essential software is installed apt: pkg=$item state=latest install_recommends=no with_items: - python - python-apt - sudo tags: init - name: INIT | Install ssh public key from current account authorized_key: user=$ssh_user key="$FILE(~/.ssh/id_rsa.pub)" tags: init - name: INIT | Install sudoers file for admin accounts lineinfile: "dest=/etc/sudoers.d/admins state=present create=yes regexp='^%admins' line='%admins ALL=(ALL:ALL) NOPASSWD: SETENV: ALL' owner=root group=root mode=0440" tags: init
- 執行 Ansible
ansible-playbook -k -l host init.yml
:. Ansible 將要求輸入 root 密碼,創建一個admins
可以訪問 sudo 的系統組,根據您目前的使用者創建一個使用者帳戶,將您的帳戶複製~/.ssh/id_rsa.pub
到您的新帳戶,然後將其添加到admins
組中。從現在開始,您可以使用 sudo 通過您的使用者帳戶使用 Ansible。