Este artículo profundiza en la conexión e impresión desde una máquina Linux a una impresora compartida de Windows. Si alguna vez has configurado la impresora y te has encontrado con errores extraños, o simplemente no logras entender por qué la máquina Linux no se comunica correctamente con Windows, no te preocupes: esto debería aclarar algunos de los problemas. Normalmente, los problemas se deben a protocolos de red, permisos o configuraciones incorrectas. Solucionarlo significa que podrás imprimir sin problemas, o al menos, con menos dolores de cabeza.
Cómo compartir una impresora de Windows y conectarse desde Linux
Compartir la impresora en Windows primero
Este es el primer paso. Obviamente, si la impresora no está compartida, Linux no la encontrará. Acceda a su PC con Windows, busque la impresora en Panel de control > Dispositivos e impresoras, haga clic con el botón derecho en ella y seleccione Propiedades de impresora. Vaya a la pestaña Compartir, marque Compartir esta impresora y asígnele un nombre sencillo (sin espacios ni caracteres extraños; Windows a veces suele tener problemas con estos).Asegúrese de que el nombre del recurso compartido esté ordenado, ya que Linux lo verá más adelante.
Si está modificando los permisos o desea agregar un usuario dedicado a la impresión, vaya a Panel de control > Herramientas administrativas > Usuarios y grupos locales. Cree un usuario como winusr1, elimínelo del grupo Usuarios si es necesario (a veces, Windows agrega a todos por defecto), configure esa cuenta con una contraseña que no caduque y bloquee cualquier cambio de contraseña si solo es para acceder a la impresora. Con PowerShell, podría hacer algo como esto:
$pass = ConvertTo-SecureString "pass2024W0rd-" -AsPlainText -Force New-LocalUser -Name "winusr1" -Password $pass -PasswordNeverExpires -UserMayNotChangePassword Remove-LocalGroupMember -Group "Users" -Member "winusr1"
Esto evita algunos problemas de permisos en el futuro, especialmente si estás automatizando o usando scripts.
Comprueba la configuración del protocolo SMB
De forma predeterminada, Windows deshabilita SMB 1.0 porque no es seguro. Sin embargo, herramientas de Linux como smbclient suelen intentar usar SMB 1.0 a menos que se les indique lo contrario. Por lo tanto, si Linux intenta conectarse mediante SMB 1.0, se bloqueará, especialmente en Windows 10/11, donde SMB 1.0 está desactivado (por defecto, afortunadamente).
Esto genera problemas como: E [Trabajo 13] ¡Error en la conexión SMB! E [Trabajo 13] No se puede conectar al host CIFS: NT_STATUS_IO_TIMEOUT
Para solucionarlo, abra la terminal en Linux y edite /etc/samba/smb.conf. Busque (o agregue) la sección [global] y luego agregue estas líneas:
[global] client min protocol = SMB2 client max protocol = SMB3
Esto aplica SMB 2 o 3, que es más seguro y compatible con Windows 10/11. No olvide reiniciar el servicio Samba después para que los cambios se apliquen.
$ sudo systemctl restart smbd
Una vez hecho esto, intentar conectarse de nuevo suele funcionar mejor. Linux se vuelve un poco inestable si los protocolos SMB no están alineados, así que este paso es muy útil.
Instalar el software necesario en Linux
Necesitarás smbclient para gestionar los recursos compartidos SMB desde la línea de comandos. Suele estar disponible en la mayoría de las distribuciones: en Ubuntu o Debian, ejecuta:
$ sudo apt install smbclient
Una vez instalado, puede enumerar los recursos compartidos SMB disponibles en la máquina Windows:
$ smbclient -L \\\\192.168.31.94 -U winusr1
Reemplace 192.168.31.94 con la IP o el nombre de host de su equipo Windows y winusr1 con el nombre de usuario que creó. Esto muestra qué recursos compartidos e impresoras están disponibles.
Si desea enviar un trabajo de impresión directamente desde Linux, puede hacer:
$ smbclient -W DOMAIN -U winusr1 //192.168.31.94/HPM1530
Luego, dentro del mensaje SMB, usarías imprimir para enviar un archivo:
smb: \> print /home/user/test.txt printing file test.txt as test.txt (856, 2 kb/s) smb: \> quit
Este método no es el más sencillo, pero funciona para enviar archivos directamente.
Uso de CUPS y la interfaz web para agregar la impresora compartida
Aquí es donde se vuelve un poco más intuitivo. La mayoría de las distribuciones de Linux incluyen CUPS (Sistema Común de Impresión UNIX) y herramientas como system-config-printer instaladas por defecto. Para conectarte a tu recurso compartido de Windows:
Abra un navegador web y vaya a http://localhost:631. Esta es la interfaz de administración de CUPS. En Administración > Agregar impresora, seleccione Otras impresoras de red > Impresora de Windows mediante SAMBA.
Cuando se le solicite la URI del dispositivo, ingrese algo como:
smb://winusr1:[email protected]/HPM1530
Reemplace la contraseña con la contraseña actual de winusr1. Este paso a veces se rechaza con un mensaje de «permiso denegado» si Samba no está configurado correctamente, así que verifique las credenciales.
Después, asigne un nombre a su impresora y seleccione el controlador adecuado.Úselo lpinfo -m|grep 1536para encontrar el controlador adecuado si es necesario, especialmente si CUPS no detecta automáticamente el correcto. Para las impresoras HP, HPLIP es una solución práctica y suele venir preinstalado, pero puede instalarlo manualmente con:
$ sudo apt install hplip hplip-gui
Otras marcas pueden requerir diferentes archivos PPD o controladores, pero Foomatic es bastante universal: solo instala:
$ sudo apt install foomatic-db-compressed-ppds
Una vez que todo esté configurado, debería poder seleccionar e imprimir en la impresora compartida de Windows desde su escritorio Linux.
Cómo afrontar errores comunes
Al intentar imprimir y obtener errores como «Error de conexión SMB» o «NT_STATUS_IO_TIMEOUT», consulte el registro de CUPS en /var/log/cups/error_log. Suele registrar los problemas de SMB con mayor claridad. La solución más común es la discrepancia del protocolo SMB; aquí es donde entran en juego las líneas de configuración de SMB anteriores.
Otro punto: el firewall de Windows puede bloquear las conexiones SMB. Asegúrate de habilitar «Compartir archivos e impresoras» a través del firewall de red. En Windows, ve a Firewall de Windows Defender > Permitir una aplicación o función a través del Firewall de Windows Defender y comprueba que «Compartir archivos e impresoras» esté habilitado.
Por último, tenga en cuenta que los permisos para compartir son importantes: asegúrese de que el usuario o la cuenta de invitado tenga acceso a la carpeta e impresora compartidas. A veces, las cosas se complican debido a las restricciones de permisos en Windows o a que el perfil de red esté configurado como «Público».
La conexión SMB puede ser un dolor de cabeza, pero corregir la discrepancia de protocolo y garantizar los permisos adecuados suele hacer que funcione a la segunda o tercera vez. Linux y Windows no siempre se entienden de fábrica, pero con estos ajustes, la conexión es más fluida.
Resumen
- Comparta la impresora correctamente en Windows: sin espacios en el nombre del recurso compartido.
- Ajuste las versiones del protocolo SMB en /etc/samba/smb.conf.
- Instalar smbclient y verificar los recursos compartidos desde Linux.
- Utilice la interfaz web de CUPS para agregar la impresora mediante URI SMB.
- Asegúrese de que el firewall de Windows no esté bloqueando SMB.
- Verifique los registros si aparecen errores.
Resumen
Conseguir que una impresora compartida de Windows funcione desde Linux puede ser complicado, sobre todo con las peculiaridades y permisos del protocolo SMB. Pero una vez que todo está alineado (protocolos SMB, firewalls, controlador correcto), todo marcha sobre ruedas. Esperemos que esto ahorre trabajo y permita que la impresora haga ping desde Linux sin demasiados problemas. Ojalá esto ayude a alguien a completar la configuración un poco más rápido que la última vez.