GNU/Linux >> LINUX-Kenntnisse >  >> Linux

SSH-Login daran hindern, motd vom Client zu drucken?

Lösung 1:

Ich bin mir nicht sicher, warum Sie eine Abneigung dagegen haben, dies richtig zu machen - entweder auf dem Server a la

PrintMotd no
PrintLastLog no

und

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

Oder fügen Sie ~/.hushlogin für jeden Benutzer hinzu.

Hinweis:Fügen Sie ~/.hushlogin zu /etc/skel hinzu, damit neue Benutzer-Home-Verzeichnisse mit der Datei erstellt werden.

Aktualisierung:

Ohne weitere Informationen zu Ihrem Backup-Cron-Job besteht mein einziger anderer Vorschlag darin, die Ausgabe des Befehls in eine Datei umzuleiten (oder Cron in einer E-Mail erfassen zu lassen) und die Ausgabe der SSH-Sitzung in /dev/null. Etwas wie:

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

Oder

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

Ich müsste ein wenig mit den Befehlen herumspielen, aber das sollte Ihnen den Einstieg erleichtern.

Lösung 2:

Wenn Sie dies auf Benutzerbasis wünschen, führen Sie einfach einen touch ~/.hushlogin aus und Sie sind fertig mit OpenSSH.

Aktualisieren :Wie an anderer Stelle erwähnt, pam_motd kann so konfiguriert werden, dass kein .hushlogin pro Benutzer verwendet wird; überprüfen Sie /etc/login.defs für HUSHLOGIN_FILE . Es kann so konfiguriert werden, dass alle Benutzer in /etc/hushlogins aufgeführt sind oder ähnliches.

Lösung 3:

@note Alle Beispiele gehen davon aus, dass Sie eine Variable connectionString gesetzt haben mit so etwas wie [email protected] .

Wie ich zur Lösung gekommen bin

Mit ssh -T sollte für einfache Befehle funktionieren. Dies gibt beispielsweise keine zusätzlichen Informationen aus:

ssh -T $connectionString "echo 'blah'"

Das Problem ist, wenn Sie versuchen, here-doc zu verwenden, um viele Befehle auszuführen. Zum Beispiel - unten wird NICHT funktionieren - es wird die Nachricht des Tages (MoTD) zurückgeben und könnte Ihnen auch "stdin:is not a tty" zeigen.

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

Um das Problem zu umgehen, müssen Sie zuerst Befehle in einer lokalen Variablen speichern und sie dann an den Remote-Server senden.

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

Aber das ist chaotisch...

Endgültige Lösung

Erstellen Sie eine universelle Funktion (beachten Sie, dass sie eine Zeichenfolge oder HEREDOC als Befehle annehmen kann).

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

Beispiele

Verwenden Sie dies wie folgt:

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

Oder so:

silentSsh $connectionString "echo 'blah'"

Oder so:

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

Oder auch so:

silentSsh $connectionString < getlines.sh

Lösung 4:

Wie wäre es mit diesem Hack?;-P

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

Folgendes ist nicht gültig:

Bestehen von -T an ssh, um die tty-Zuweisung zu deaktivieren:

ssh -T machineName 'echo foo'

Lösung 5:

Welches Betriebssystem ist das? Auf einigen Systemen (wie ubuntu) wird die motd nicht vom ssh-Server (PrintMotd in /etc/ssh/sshd_config) gedruckt, sondern von pam mit pam_motd. Wenn dies der Fall ist, können Sie es wahrscheinlich nicht vom Client aus steuern.


Linux
  1. Ssh – Wie beschleunigt man die zu langsame SSH-Anmeldung?

  2. Wie erkennt man, ob die Shell von ssh aus gesteuert wird?

  3. Linux:Wie bekomme ich alle Anmeldeprotokolle vom System?

  4. Root-SSH-Anmeldung nur mit Public-Key-Authentifizierung zulassen

  5. Holen Sie sich die letzten 4 Zeichen der Ausgabe von Standardausgabe

Ssh-Portweiterleitung, um von überall auf den Heimcomputer zuzugreifen?

Wie deaktiviere ich die SSH-Anmeldung für den Root-Benutzer in Linux?

Wie höre ich auf, IP von EC2 zu known_hosts für ssh hinzuzufügen?

So führen Sie SCP vom Linux-Server zum Windows-Client aus

Der MD5-Hashwert unterscheidet sich von Bash und PHP

SSH - So fügen Sie den Befehl -t in die Datei ~/.ssh/config ein