CUPS SSH-LPR Backend einrichten

Eines der Möglichkeiten bei uns in der KIT Infofakultät zu drucken, ist neben dem Benutzen des Pool-Rechner vor Ort, auch der externe Zugriff via. SSH. Dabei kopiert man mit SCP sein Dokument auf das Benutzerkonto der ATIS, sucht sich einen Drucker aus und startet mit lpd/lpr einen Druckauftrag.
Jedoch kann man mit einem CUPS-Backend soetwas automatisieren und im Netz lassen sich dazu auch schonScripte finden. Durch Debuggen von Cups habe Ich jedoch festgestellt, das keines der Backends von CUPS einen 6. Parameter (File to print) gestellt bekommt. Vermutlich habe Ich einfach den falschen Treiber bei der Einrichtung des SSH-LPR-Backends ausgewählt. Zumindest habe Ich dann ein Backend gefunden, der besser Dokumentiert wurde und selber auch eine sehr ausführliche Fehlerausgabe hat. Für ArchLinux lässt sich das ganze Setup dann relativ kurz zusammenfassen (es wird der Paketmanager-Wrapper Yaourt und SystemD verwendet):

yaourt -S sshldp
systemctl restart cupsd.service
sudo mkdir /sbin/.ssh
sudo chown daemon:daemon /sbin/.ssh
sudo -u daemon ssh s_xxx@i08fs1.ira.uka.de
# accept host/fingerprint for the user daemon
# adjust the lpd path for the remote machine in /usr/lib/cups/backend/sshlpd
mkdir /etc/sshpassword
vim /etc/sshpassword/s_xxx@i08fs1.ira.uka.de
# insert your user password (plain), yeah its creepy

Vermutlich nicht die schönste Variante für einen Backend (Perl, speichern eines unverschlüsselten Passwortes und das ganze noch bei einem unterpriviligierten User wie daemon), aber immerhin hats damit mal funktioniert ;)
Das Einrichten des Druckers ist relativ einfach, sobald CUPS läuft und der Backend richtig erkannt wurde. Zu erst http://127.0.0.1:631 im Browser aufrufen um die Konfigurationsoberfläche von CUPS zu erreichen. Dort auf Administration klicken, mit root einloggen und Drucker hinzufügen.

Bei der darauf folgenden Liste wählt man den Backend LPD over SSH Login, dann die Ziel-Adresse, also quasi Benutzername@UNI-Server/Druckername. In meinem Fall wäre das sshlpd://s_xxx@i08fs1.ira.uka.de/pool-farb1. Die verfügbaren Drucker lassen sich auf dem remote Server auch ausgeben:

# s_xxx@i08fs1(~)$
lpstat -p
# printer auskunft-sw1 is idle.  enabled since So 23 Sep 2012 07:25:23 CEST
# printer pool-farb1 now printing pool-farb1-49.  enabled since Do 27 Sep 2012 # 09:09:40 CEST
# printer pool-sw1 is idle.  enabled since Di 18 Sep 2012 19:27:32 CEST
# printer pool-sw2 is idle.  enabled since Di 18 Sep 2012 18:02:18 CEST
# printer pool-sw3 is idle.  enabled since Di 18 Sep 2012 18:01:55 CEST

Der “Druckertreiber” ist dann: Generic -> Generic PostScript Printer Foomatic/Postscript (recommended) (en).

Debugging

In /etc/cups/cupsd.conf kann das LogLevel auf debug2 gestellt werden (even more verbose!). Dann findet man in /var/log/cups/error_log auch die Ausgaben des Backends. Ob der Druckauftrag auf dem remote Server angekommen ist, kann man dort mit dem Befehl lpstat -o überprüfen.

bevor sich noch einer wegen permission denied den Wolf sucht: Zumindest unter Debian müssen die Rechte vom Backend genau 600 sein. Und natürlich alles unter root – das ist Apples Beitrag zur Linux-Sicherheit.

1 Comment

Leave a Reply

Your email address will not be published. Required fields are marked *

* Checkbox GDPR is required

*

I agree

Software
Officepad – Etherpad alternative based on Onlyoffice

During the Chaos Communication Camp 2019 I was working on a project called Officepad. The aim was to build a web interface comparable to Etherpad. Etherpad is a well established tool for online text collaboration used by software developers, activists and so on. Etherpad is relatively stable and works well …

Software
2
Bye bye Play Store! Mirroring Play Store Apks to private F-Droid repo

This small tutorial will show you how to setup your own F-Droid repository containing automatically mirrored Play Store apps. Using this private repo, you don’t have to relay on Google Play Store or third party stores anymore to keep non-free apps up-to-date. All you need to have is a Linux …

Software
Ebook reader app for Nextcloud

Because of lack of altenatives I decided to write a small ebook reader plugin for Nextcloud. The task of creating such an app was quite easy: I just forked the files_pdfviewer extension and replaced PDF.js with the Epub.js library. In the app template file, I used the reference ebook reader …