TL;DR: Rebex File Server supports SFTP and SCP. If you want Linux
scp command to use the classic SCP protocol (called "SCP1" in the book you linked) instead of SFTP (called "SCP2" in the book), then "-f" is not how it's done. Use the "-O" switch instead:
scp -O -i keys.ppk snausages.txt email@example.com:/home/laser/abcd.txt
This assumes you are using a recent version of OpenSSH. On other systems or with old OpenSSH versions, the syntax might be different, but it will never involve the "-f" switch. The purpose of that switch is entirely different, as explained below.
The explanation at the beginning of https://docstore.mik.ua/orelly/networking_2ndEd/ssh/ch03_08.htm is somewhat confusing. The authors of that book invented their own terms ("SCP1" and "SCP2"), even though they don't actually exist. They use "SCP1" to refer to SCP, and they even acknowledge the non-existence of "SCP2" at that same page:
We suppose you could refer to SFTP as the "scp2 protocol," but we've never heard it and don't recommend it if you want to keep your sanity.
Here I 100% agree - those invented terms are confusing, and we should not use them. There is no "SCP2", and there is no "SCP1 mode". There are two file transfer protocols commonly used over SSH, and those are SFTP and SCP. But the
scp command at the client-side often supports both SFTP and SCP, which is what the linked text is trying to explain.
So what about the "SCP -f" switch? The "3.8.1. scp1 Details" chapter aims to explain the inner workings of the SCP protocol, and it explains that "-f" or "-t" switches are only used internally when the client-side
scp command invokes another instance of
scp at the remote server. In order to do this, it passes one of those switches to the remote
scp instance, which instructs it to start in SCP-server mode. Then, the client-side
scp can start communicating with the server-side
scp to upload or download data.
This can also be seen in the table below "3.8.1" - these switches are not actually used when starting
scp at the client-side. The client-side command is simply
scp foo server:bar or
scp server:bar foo. Internally, these commands actually start
scp -t bar or
scp -f bar at the server, but they are not supposed to passed to
scp from a Linux command line.
When you run
scp -f -i keys.ppk snausages.txt firstname.lastname@example.org:/home/laser/abcd.txt, you are mixing server-side and client-side syntax. By passing the "-f" option, you have actually started SCP in server-side mode, so instead of connecting to an SSH server and transferring the file, the local SCP instance thinks it's a server, and starts reading SCP client's commands from the standard input of the process. But there is no SCP client there, so those commands never arrive (unless you actually type them properly into the Linux console) and the process hangs.
Please see this very informative answer for further details regarding the client-side SCP and it's options.
If you would like to learn more about the inner working of SCP, including the purpose of "-f" and "-t" switches, check How the SCP protocol works. However, please note that even though this might be interesting to know, this knowledge is not needed at all in order to use SCP to actually transfer files.