On the remote server, I use lp
command to print documents. I can connect to this server through SSH.
How can I print a file directly from my local computer using that printer?
Basically, having lp
(executed by ssh
on the remote machine) read from STDIN which is provided outside the ssh
-call like this should work:
cat file-to-print | ssh user@remotehost "lp -"
For more comfort, have a look at this guy's script that gives CUPS a sshlpr://
-backend.
Depending on which printing system is running on the server, you may be able to run the same lp
directly on your client machine and use SSH to forward its connection to the server.
For example, CUPS, which is the printing system of OSX and the most common on Linux nowadays, listens on port 631 (that's the standard IPP port). LPD, the traditional unix printing protocol, listens on port 515.
So if the printing system is CUPS, install a CUPS client on your local machine, and try
ssh -L 631:localhost:631 server.example.com sleep 999999999 &
Then run lpq
or lpstat
and see if you can reach the printers.
If you find a working configuration, put the SSH command above in a session startup script, or define a host alias with the appropriate LocalForward
directive in ~/.ssh/config
.