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
Virtual 3D online exhibition with MapBox GL JS

For my last semester in university (summer semester 2018) at the KIT, I was part of a project to create an “online art exhibition”. We planned to produce different media formats in smaller groups. One for video, another for text and promotion and one for the online presence. I’ve figured …

Software
Host your own Mapbox GL JS vector tiles map

I’ve done some research recently on how I could host my own online map viewer with a MapBox GL JS instance, an excellent and modern open-source alternative for Google Maps. The server should also serve own preprocessed map data from OpenStreetmap planet extracts. No external or third-party service will be …

Software
1
Easily setup Signal 2FA on Nextcloud 14

Two-factor authentication (short 2FA) is an important security concept to secure unauthorized access to your web applications. Popular online services like Google Mail, Instagram or Facebook already provide this mechanism to secure user accounts with an additional one-time token. Considering someone is able to obtain your username and password combination, …