GNU/Linux >> Linux Esercitazione >  >> Linux

Impedisci a ssh login di stampare motd dal client?

Soluzione 1:

Non sono sicuro del motivo per cui hai un'avversione nel farlo correttamente, sia sul server che sulla

PrintMotd no
PrintLastLog no

e

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

O aggiungendo ~/.hushlogin per ogni utente.

Suggerimento, per ~/.hushlogin, aggiungilo a /etc/skel in modo che le nuove home directory degli utenti vengano create con il file.

Aggiornamento:

Senza ulteriori informazioni sul tuo cron job di backup, il mio unico altro suggerimento è di reindirizzare l'output del comando su un file (o lasciare che cron lo acquisisca nella posta elettronica) e l'output della sessione ssh su /dev/null. Qualcosa come:

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

Oppure

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

Dovrei giocare un po' con i comandi, ma questo dovrebbe farti iniziare.

Soluzione 2:

Se lo desideri in base all'utente, fai semplicemente un touch ~/.hushlogin e sei pronto con OpenSSH.

Aggiorna :Come sottolineato altrove, pam_motd può essere configurato per non utilizzare un .hushlogin per utente; seleziona /etc/login.defs per HUSHLOGIN_FILE . Può essere configurato per avere tutti gli utenti elencati in /etc/hushlogins o simile.

Soluzione 3:

@note Tutti gli esempi presuppongono che tu abbia impostato una variabile connectionString con qualcosa come [email protected] .

Come sono arrivato alla soluzione

Usando ssh -T dovrebbe funzionare per comandi semplici. Ad esempio, questo non stampa alcuna informazione aggiuntiva:

ssh -T $connectionString "echo 'blah'"

Il problema è quando si tenta di utilizzare here-doc per eseguire molti comandi. Ad esempio, il muggito NON funzionerà, farà eco al messaggio del giorno (MoTD) e potrebbe anche mostrarti "stdin:non è un tty".

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

Per risolvere il problema devi prima salvare i comandi nella variabile locale e inviarli al server remoto.

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

Ma è un casino...

Soluzione finale

Crea una funzione universale (nota che può prendere una stringa o HEREDOC come comandi).

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

Esempi

Usalo in questo modo:

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

O così:

silentSsh $connectionString "echo 'blah'"

O così:

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

O anche così:

silentSsh $connectionString < getlines.sh

Soluzione 4:

Che ne dici di questo trucco?;-P

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

Quanto segue è non valido:

Superare -T a ssh per disabilitare l'allocazione tty:

ssh -T machineName 'echo foo'

Soluzione 5:

Che sistema operativo è questo? Su alcuni sistemi (come Ubuntu) il motd non viene stampato dal server ssh (PrintMotd in /etc/ssh/sshd_config), ma da pam con pam_motd. Se questo è il caso, probabilmente non puoi controllarlo dal client.


Linux
  1. Linux:come ottenere tutti i registri di accesso dal sistema?

  2. Come impedire a Orca di avviarsi all'accesso?

  3. Trova l'indirizzo IP del client in una sessione SSH

  4. Ottieni gli ultimi 4 caratteri dell'output da standard out

  5. Stampare dalla riga di comando con LibreOffice, comandi lpr?

Ssh Port Forward per accedere alla macchina domestica da qualsiasi luogo?

Come disabilitare l'accesso SSH per l'utente root in Linux?

Come interrompere l'aggiunta di IP da EC2 a known_hosts per ssh?

Come eseguire SCP dal server Linux al client Windows

Il valore hash MD5 è diverso da Bash e PHP

SSH - Come includere il comando -t nel file ~/.ssh/config