Filter files received on scp server

Jon Earle earlej at
Fri Aug 4 13:37:54 AEST 2017


So, I would be looking at type A. Forgive me if my understanding of how OpenSSH operates is not reflective of reality. I am assuming that, the file transfer is happening somewhat logically, with a name being known, content written, blah blah.

>From reading scp.c, it appears that, the client end at least knows the file name so I must assume the server end must be given it.

I am hoping to filter on that file name so I can reject certain files (ideally, configurable file patterns).  Suppose I wish for all files named "kitten.txt" to be rejected, I would simply compare the incoming file name to that and, if a match, end the transfer and session.

Not using any third party apps, nor will I propose any - I wish to make sshd/scp dance this dance, if I can.

Note that, if it's actually impossible to do this, that's an acceptable outcome. Not preferred - I hate giving up - but, an uncomfortable answer is still an answer.

From: openssh-unix-dev < at> on behalf of Morham Anthelleron <opensshdev at>
Sent: Thursday, August 3, 2017 7:33:30 PM
To: openssh-unix-dev at
Subject: Re: Filter files received on scp server

Quoting Jon Earle <earlej at>:

> Hey folks,
> For reasons, I am trying to restrict what files the scp server will accept.

Are you trying to filter based on filenames or as a completion task upon
successful receipt of the accepted files through ClamAV or similar scanning
tool. (Let's call the first example "Type A" and the second "Type B".)  Or
alternatively, you could just use "file magic" detection of *ANY* system
executable, for a much lighter weight "threat scanning". Let's call that Type
C (or B-Light).

With Type B (and probably C), I'm assuming you'd quarantine the file(s) in
transit until the scanning is complete, with a successful result "releasing"
the file to its proper location, while a "failed" file would be deleted or
quarantined with log entries to describe the situation.  This sounds like a
much "heavier" change to make to sshd than Type A, even if it is the more
effective strategy.

You're patching the code on the server and/or running the server's sshd with
the appropriate debug/logging settings, correct?


openssh-unix-dev mailing list
openssh-unix-dev at

More information about the openssh-unix-dev mailing list