Estoy depurando algo relacionado con los inicios de sesión LDAP.El inicio de sesión Ldap SSH no funciona: las mismas configuraciones funcionaron en más de 20 servidores más - Ubuntuy noté que en algunos servidores los registros usan localhost y en otros tienen el nombre de host. Tener el nombre de host parece tener más sentido, especialmente si centralizáramos los archivos de registro.
¿Cómo se configura esto? ¿Por qué no está predeterminado utilizar el nombre de host? Simplemente me dio curiosidad...
Ejemplos:
Oct 29 11:23:56 daily sshd[20625]: pam_unix(sshd:session): session opened for user LDAPUSERNAME by (uid=0)
O
Oct 29 10:56:36 localhost sshd[2560]: pam_unix(sshd:auth): check pass; user unknown
Actualizar:
user@qa-ops:~$ hostname
qa-ops
user@daily:~$ hostname
daily.domain.com
¿Quizás tenga que ver con que Daily tenga un nombre de dominio completo en el nombre de host? Siempre pensé que se suponía que /etc/hostname era solo la parte corta del nombre de host, no el nombre de host completo.dominio.com, etc.
Respuesta1
https://wiki.archlinux.org/index.php/rsyslog#Configure_Hostname
Rsyslog usa la rutina glibc gethostname() o gethostbyname() para determinar el nombre de host de la máquina local. La rutina gethostname() o gethostbyname() comprueba el contenido del
/etc/hosts
nombre de dominio completo (FQDN) si no está utilizando BIND o NIS.
Más específicamente, si la localhost
entrada de su IP aparece primero en /etc/hosts
, tendrá prioridad.
(Suponiendo que ese files
sea el primer valor de la hosts:
línea en /etc/nsswitch.conf
. O, alternativamente, que su nombre de host no se pueda resolver mediante DNS).
La página de Arch Wiki continúa explicando:
Puede comprobar cuál es el FQDN configurado actualmente de la máquina local ejecutando hostname --fqdn. rsyslog utilizará la salida de hostname --short al escribir mensajes de registro. Si desea tener nombres de host completos en los registros, debe agregar $PreserveFQDN al principio del archivo (antes de usar cualquier directiva que escriba en archivos). Esto se debe a que rsyslog lee el archivo de configuración, lo aplica sobre la marcha y luego lee las líneas posteriores.
El archivo /etc/hosts contiene varias líneas que asignan FQDN a direcciones IP y que asignan alias a FQDN. Vea el archivo de ejemplo /etc/hosts a continuación:
/etc/hosts
#<ip-address> <hostname.domain.org> <hostname> #<ip-address> <actual FQDN> <aliases> 127.0.0.1 localhost.localdomain somehost.localdomain localhost somehost ::1 localhost.localdomain somehost.localdomain localhost somehost
localhost.localdomain es el primer elemento que sigue a la dirección IP, por lo que la función gethostbyname() devolverá localhost.localdomain como el FQDN de la máquina local. Luego, el archivo /var/log/messages utilizará localhost como nombre de host.
Para utilizar algún host como nombre de host. Mueva somehost.localdomain al primer elemento:
/etc/hosts
#<ip-address> <hostname.domain.org> <hostname> #<ip-address> <actual FQDN> <aliases> 127.0.0.1 somehost.localdomain localhost.localdomain localhost somehost ::1 somehost.localdomain localhost.localdomain localhost somehost
Puede resultar difícil saber exactamente cómo se selecciona la información relevante /etc/hosts
(o el DNS) en diversas circunstancias. Al leer el código fuente nuevamente, creo que rsyslog
intenta resolver el nombre de host del sistema (salida del hostname
comando) en un FQDN.
Creo que esto significa que donde dice "gethostname o gethostbyname" arriba, en realidad debería decir "gethostname".ygethostbyname". Por lo tanto, esas instrucciones probablemente podrían mejorarse, pero al menos le indican el lugar correcto.
También hay una pregunta muy similar en elLista de correo de usuarios de rsyslog.