diff options
| -rwxr-xr-x | extras/estampa-ssh | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/extras/estampa-ssh b/extras/estampa-ssh index 4b2202f..eeee862 100755 --- a/extras/estampa-ssh +++ b/extras/estampa-ssh @@ -16,9 +16,29 @@ PASTE_DIR="${1:?usage: estampa-ssh <paste-dir>}" estampa --run "$PASTE_DIR" >/dev/null 2>&1 || true case "${SSH_ORIGINAL_COMMAND:-}" in - "scp -t "*|"scp -f "*|"/usr/lib/openssh/sftp-server"|"internal-sftp") + "scp -t "*|"scp -f "*) + # Legacy scp protocol (`scp -O ...` on the client). exec $SSH_ORIGINAL_COMMAND ;; + */sftp-server|*/sftp-server\ *) + # Modern scp uses SFTP; sshd sets SSH_ORIGINAL_COMMAND to the + # subsystem path defined by `Subsystem sftp ...` in sshd_config. + exec $SSH_ORIGINAL_COMMAND + ;; + internal-sftp|"internal-sftp "*) + # `Subsystem sftp internal-sftp` runs in-process inside sshd, + # but here we're outside sshd so we need a real binary. + for sftp in \ + /usr/lib/ssh/sftp-server \ + /usr/lib/openssh/sftp-server \ + /usr/libexec/sftp-server \ + /usr/libexec/openssh/sftp-server + do + [ -x "$sftp" ] && exec "$sftp" + done + echo "estampa-ssh: no sftp-server binary found" >&2 + exit 1 + ;; *) echo "estampa-ssh: only scp/sftp uploads are allowed" >&2 exit 1 |