{{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
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
systemctl restart sshd
Ou
alias ansible_host=192.168.1.102 ansible_ssh_transfer_method=scp
Ou
''ansible.cfg''
[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