Linux

受管節點上是否需要 SSH SFTP 子系統才能使 Ansible 正常工作?

  • February 19, 2020

當我執行時:

ansible all -a "/bin/echo hello" -u myuser

我回來了:

mydomain.myhost.com | FAILED => failed to open a SFTP connection (Channel closed.)

SFTP 子系統在我嘗試連接的受管節點上被禁用。

**受管節點是否需要 SFTP?**Ansible 文件沒有特別提到 SFTP:http ://docs.ansible.com/intro_installation.html#managed-node-requirements

我嘗試在 ansible.cfg 中設置此值:

scp_if_ssh=True

……但它沒有效果。(感謝神奇神奇狗弗雷德的建議。)

我還確保我的非互動式 shell 不會像這裡建議的那樣產生任何輸出。

這就是我最終做的事情:

  1. 複製/etc/ansible/ansible.cfg~/.ansible.cfg
  2. 已編輯 ~/.ansible.cfg
  3. 改為#scp_if_ssh = False_scp_if_ssh = True
  4. 添加ssh_args =[ssh_connection]部分。
  5. -c SSH標誌執行我的命令

感謝神奇神奇狗 Fred為我指明了正確的方向。

是的,ansible 依賴於能夠將文件傳輸到遠端機器。它預設使用 sftp 來執行此操作。您可以覆蓋它以使用 scp 使用

scp_if_ssh
Occasionally users may be managing a remote system that doesn’t have SFTP enabled. If set to True, we can cause scp to be used to transfer remote files instead:

scp_if_ssh=False
There’s really no reason to change this unless problems are encountered, and then there’s also no real drawback to managing the switch. Most environments support SFTP by default and this doesn’t usually need to be changed.

以上資訊取自此頁面:

http://docs.ansible.com/intro_configuration.html#openssh-specific-settings

引用自:https://serverfault.com/questions/582171