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
Importing playlists to Jellyfin media server

In the following post I would like to describe a way to import music playlists to Jellyfin media server, for example in case you want to migrate them from a former Plex or Emby installation. Usually, Jellyfin is already able to detect playlist files within the media library. Unfortunately my …

Software
Jellyfin media server on Archlinux ARM

In this post, I want to share some insights on building Jellyfin media server for Archlinux ARM. The PKGBUILD for Jellyfin one can find on the AUR, is specifically made for 64 bit architectures. Nevertheless Microsoft released the dotnet runtime, which Jellyfin relies on instead of Mono, also for Linux …

Software
2
Voice control Archlinux with Amazon Alexa

I was interested to see how commercial voice recognition software would behave on an usual Linux laptop and tried to deploy an Amazon Alexa instance. There are some installation scripts and tutorials available for Ubuntu and Raspberry PI using the avs-device-sdk from Github. Even though some of them are official …