GNU/Linux >> Tutoriales Linux >  >> Linux

¿Evitar que el inicio de sesión ssh imprima motd desde el cliente?

Solución 1:

No estoy seguro de por qué tiene aversión a hacer esto correctamente, ya sea en el servidor a la

PrintMotd no
PrintLastLog no

y

#/etc/pam.d/ssh
# Print the message of the day upon successful login.
# session    optional     pam_motd.so

O agregar ~/.hushlogin para cada usuario.

Sugerencia, para ~/.hushlogin, agréguelo a /etc/skel para que se creen nuevos directorios de inicio de usuario con el archivo.

Actualización:

Sin más información sobre su trabajo cron de copia de seguridad, mi única otra sugerencia es redirigir la salida del comando a un archivo (o dejar que cron la capture en un correo electrónico) y la salida de la sesión ssh a /dev/null. Algo como:

0 0 * * * ssh backuphost "backup_script_that_writes_to_a_log" >/dev/null

O

0 0 * * * ssh backuphost "backup_command 2>&1" >/dev/null

Tendría que jugar un poco con los comandos, pero eso debería ayudarte a empezar.

Solución 2:

Si desea esto por usuario, simplemente haga un touch ~/.hushlogin y ya está todo listo con OpenSSH.

Actualizar :Como se señaló en otra parte, pam_motd puede configurarse para no usar un .hushlogin por usuario; comprobar /etc/login.defs para HUSHLOGIN_FILE . Puede configurarse para que todos los usuarios aparezcan en /etc/hushlogins o similar.

Solución 3:

@note Todos los ejemplos asumen que ha establecido una variable connectionString con algo como [email protected] .

Cómo llegué a la solución

Usando ssh -T debería funcionar para comandos simples. Por ejemplo, esto no imprime ninguna información adicional:

ssh -T $connectionString "echo 'blah'"

El problema es cuando intenta usar here-doc para ejecutar muchos comandos. Por ejemplo, a continuación NO funcionará, hará eco del mensaje del día (MoTD) y también podría mostrarle "stdin:is not a tty".

somethingLocal='something local'
ssh -T $connectionString <<EOC
    echo 'blah'
    echo "blah $somethingLocal"
EOC

Para solucionar el problema, primero debe guardar los comandos en la variable local y luego enviarlos al servidor remoto.

somethingLocal='something local'
read -r -d '' commands <<EOC
    echo 'blah'
    echo "blah $somethingLocal"
EOC
ssh -T $connectionString "$commands"

Pero eso es complicado...

Solución definitiva

Cree una función universal (tenga en cuenta que puede tomar una cadena o HEREDOC como comandos).

function silentSsh {
    local connectionString="$1"
    local commands="$2"
    if [ -z "$commands" ]; then
        commands=`cat`
    fi
    ssh -T $connectionString "$commands"
}

Ejemplos

Usa esto así:

somethingLocal='something local'
silentSsh $connectionString <<EOC
    echo 'blah'
    echo "blah $somethingLocal"
EOC

O así:

silentSsh $connectionString "echo 'blah'"

O así:

silentSsh $connectionString <<'EOC'
    echo 'blah'
    somethingRemote=`echo 'whatever'`
    echo "blah $somethingRemote"
EOC

O incluso así:

silentSsh $connectionString < getlines.sh

Solución 4:

¿Qué tal este truco?;-P

ssh -t [email protected] '/bin/bash'

Lo siguiente no válido:

Pasando -T a ssh para deshabilitar la asignación de tty:

ssh -T machineName 'echo foo'

Solución 5:

¿Qué sistema operativo es este? En algunos sistemas (como ubuntu), el motd no lo imprime el servidor ssh (PrintMotd en /etc/ssh/sshd_config), sino pam con pam_motd. Si este es el caso, probablemente no puedas controlarlo desde el cliente.


Linux
  1. ¿Evitar que la conexión Nfs rota congele el sistema del cliente?

  2. ¿Conexión Ssh rechazada desde el interior de la LAN?

  3. ¿El bucle ignora el cambio de variable de una subcapa en segundo plano?

  4. Permitir el inicio de sesión de root ssh solo con autenticación de clave pública

  5. Encuentre la dirección IP del cliente en una sesión SSH

Ssh Port Forward para acceder a la máquina doméstica desde cualquier lugar?

Linux:¿cómo iniciar sesión como usuario en Tty desde Ssh?

¿Cómo evitar que Orca se inicie al iniciar sesión?

¿Cómo deshabilitar el inicio de sesión SSH para el usuario raíz en Linux?

Generación de un hash SHA-256 desde la línea de comandos de Linux

El valor hash MD5 es diferente de Bash y PHP