GNU/Linux >> Znalost Linux >  >> Linux

Zastavit ssh přihlášení z tisku motd z klienta?

Řešení 1:

Nejsem si jistý, proč máte odpor k tomu, abyste to udělali správně - buď na serveru a la

PrintMotd no
PrintLastLog no

a

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

Nebo přidání ~/.hushlogin pro každého uživatele.

Tip, pro ~/.hushlogin jej přidejte do /etc/skel, aby se se souborem vytvořily nové domovské adresáře uživatelů.

Aktualizace:

Bez dalších informací o vaší úloze zálohování cron, můj jediný další návrh je přesměrovat výstup příkazu do souboru (nebo nechat cron zachytit jej v e-mailu) a výstup ssh relace do /dev/null. Něco jako:

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

Nebo

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

Musel bych si trochu pohrát s příkazy, ale tím byste měli začít.

Řešení 2:

Pokud to chcete na úrovni jednotlivých uživatelů, stačí provést touch ~/.hushlogin a vše je nastaveno pomocí OpenSSH.

Aktualizovat :Jak je uvedeno jinde, pam_motd může být nakonfigurováno tak, aby nepoužívalo .hushlogin pro uživatele; zaškrtněte /etc/login.defs pro HUSHLOGIN_FILE . Může být nakonfigurován tak, aby měl všechny uživatele uvedené v /etc/hushlogins nebo podobně.

Řešení 3:

@note Všechny příklady předpokládají, že jste nastavili proměnnou connectionString s něčím jako [email protected] .

Jak jsem se k řešení dostal

Pomocí ssh -T by měl fungovat pro jednoduché příkazy. Toto například nevytiskne žádné další informace:

ssh -T $connectionString "echo 'blah'"

Problém je, když se pokusíte použít here-doc ke spuštění mnoha příkazů. Například – níže uvedené NEBUDE fungovat – bude to echo zpráva dne (MoTD) a také vám může ukázat „stdin:is not a tty“.

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

Chcete-li problém vyřešit, musíte nejprve uložit příkazy do místní proměnné a odeslat je na vzdálený server.

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

Ale to je špinavé...

Konečné řešení

Vytvořte univerzální funkci (všimněte si, že může mít jako příkazy řetězec nebo HEREDOC).

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

Příklady

Použijte to takto:

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

Nebo takhle:

silentSsh $connectionString "echo 'blah'"

Nebo takhle:

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

Nebo dokonce tak:

silentSsh $connectionString < getlines.sh

Řešení 4:

Co říkáte na tento hack?;-P

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

Následující text není platné:

Předání -T pro ssh pro zakázání alokace tty:

ssh -T machineName 'echo foo'

Řešení 5:

Co je to za operační systém? Na některých systémech (jako ubuntu) motd netiskne ssh server (PrintMotd v /etc/ssh/sshd_config), ale pam s pam_motd. Pokud je to tento případ, pak to pravděpodobně nemůžete ovládat z klienta.


Linux
  1. Zabránění přerušení připojení NFS před zamrznutím klientského systému?

  2. Připojení Ssh odmítnuto zevnitř sítě Lan?

  3. Ignoruje smyčka změnu proměnné z podskořápky na pozadí?

  1. Linux – Jak přihlásit uživatele do Tty z Ssh?

  2. Získejte poslední 4 znaky výstupu ze standardního výstupu

  3. Jak zastavit přidávání IP z EC2 do známých_hostitelů pro ssh?

  1. Ssh – Jak urychlit příliš pomalé přihlašování Ssh?

  2. Jak SCP z linuxového serveru na Windows klienta

  3. Tisk z příkazového řádku pomocí LibreOffice, příkazy lpr?