我可以通过 SSH 访问已设置打印机的远程主机 (FreeBSD)。我在该主机上没有 root 访问权限或任何其他特殊用户权限。现在我想直接从我的笔记本电脑上在该打印机 (Ubuntu 10.10) 上打印。问题是我不知道如何“导入”或打印机,因为它需要我的用户帐户进行身份验证(打印配额限制)。每次通过电子邮件将要打印的文件发送给我或通过 scp 传输文件都很麻烦,目前我手动将 PostScript 输出传输到 ssh 命令,但这也是一个巨大的工作开销。例如,当我想打印 foo.pdf 时
pdftops '/path/to/foo.pdf' - | ssh 用户@remotehost 'lpr -P 打印机名称'
那么,有人知道有什么方法可以简化这个过程吗?理想情况下,我只想使用打印机名称,而不是整个 ssh 命令
答案1
为什么管道的开销很大?因为打字?
只需将您的命令放在一个小的脚本/函数/别名中并创建一个无密码的 ssh 密钥并将公共部分添加到远程 ~/.ssh/authorized_keys,它就会变得容易得多。
您还可以使用带密码的 ssh 密钥并使用以下方法缓存密码
ssh-add ~/.ssh/your_private_key
因此,您可以获得带有密码的密钥的安全,但不必每次都输入密码。
另一种方法是创建到正确端口的 ssh 隧道。ssh -L ... 可以做到这一点,请阅读 man ssh。您还可以使用 LocalForward 将此隧道添加到您的 ~/.ssh/config,以便您创建与已定义的此端口隧道的连接。
答案2
我还没有尝试过这个特定的脚本,但我的解决方案类似于 CUPS 的 SSH-LPR 后端: http://www.masella.name/technical/sshlpr.html
这个想法是设置一个本地 CUPS 打印机,并使用此后端为您处理 SSH 传输。这将涉及设置 SSH 公钥/私钥和对 CUPS 进行一些调整,但结果将是一个“本地”打印机,SSH 在后台无缝处理。