Eu testei isso em um contexto de máquina virtual: o servidor SSH é o Cygwin (também host de VM); o cliente é o Arch Linux SSH (também convidado da VM).
Eu usei o script a seguir.
Eu não estou fazendo chrooting, então não preciso copiar nenhum binários na pasta compartilhada, apenas para copiar a chave pública. De qualquer forma, acho que, usando o internal-sftp (não SSH), os requisitos binários devem ser reduzidos.
#!/bin/sh
## Setup SFTP access on server side
## using an alias user and to a subdir of the aliased user home
## ------------------------------------------------------------
## Customise
## Shared path inside the aliased user home
sharedpath="/home/jon/pub"
## Aliased user name
altuser="pub"
## Path to the public key of aliased user
pubkey=~/.ssh/pub_rsa.pub
## Add aliased user to /etc/passwd
user='grep ^$USER /etc/passwd'
txt="$altuser:'echo $user | cut -d: -f2-5'"
txt="$txt:$sharedpath:'echo $user | cut -d: -f7'"
echo $txt>>/etc/passwd
## Set user rules in sshd_config
txt="Match User $altuser
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
"
echo "$txt" >>/etc/ssh/sshd_config
## Copy the public key in the shared folder
mkdir -p "$sharedpath/.ssh"
cp "$pubkey" "$sharedpath/.ssh/"
## Format sftp line
echo "You can now run on the client (adjust paths accordingly):"
echo "sftp -i ${pubkey%.*} [email protected]"