{{tag>Brouillon Pb Ansible SSH sftp}} # Pb Ansible - sftp transfer mechanism failed ### Warn - sftp transfer mechanism failed #### Connexion distante ~~~ $ ansible -m ping -i inv.lst -u root srv1 [WARNING]: sftp transfer mechanism failed on [srv1]. Use ANSIBLE_DEBUG=1 to see detailed information srv1 | SUCCESS => { "changed": false, "ping": "pong" } ~~~ ~~~ $ sftp root@srv1 subsystem request failed on channel 0 Connection closed ~~~ #### Sur la cible ~~~ # tail -f /var/log/messages> Aug 7 10:25:19 srv1 sshd[30049]: Accepted publickey for root from 192.168.1.22 port 45878 ssh2 Aug 7 10:25:19 srv1 sshd[30051]: subsystem request for sftp Aug 7 10:25:19 srv1 sshd[30051]: error: subsystem: cannot stat /usr/sbin/sftp-server: No such file or directory Aug 7 10:25:19 srv1 sshd[30051]: subsystem request for sftp failed, subsystem not found ~~~ ~~~ # grep sftp /etc/ssh/sshd_config Subsystem sftp /usr/libexec/openssh/sftp-server ~~~ #### Solution Sur la cible ~~~bash ln -s /usr/libexec/openssh/sftp-server /usr/sbin/sftp-server ~~~ Ou `/etc/ssh/sshd_config` ~~~ #Subsystem sftp /usr/libexec/openssh/sftp-server Subsystem sftp internal-sftp ~~~ ~~~bash systemctl restart sshd ~~~ Ou ~~~ini alias ansible_host=192.168.1.102 ansible_ssh_transfer_method=scp ~~~ Ou `ansible.cfg` ~~~ini [ssh_connection] # Control the mechanism for transferring files (old) # * smart = try sftp and then try scp [default] # * True = use scp only # * False = use sftp only #scp_if_ssh = smart # Control the mechanism for transferring files (new) # If set, this will override the scp_if_ssh option # * sftp = use sftp to transfer files # * scp = use scp to transfer files # * piped = use 'dd' over SSH to transfer files # * smart = try sftp, scp, and piped, in that order [default] #transfer_method = smart ~~~