GNU/Linux >> Belajar Linux >  >> Linux

Hentikan login ssh dari mencetak motd dari klien?

Solusi 1:

Saya tidak yakin mengapa Anda enggan melakukan ini dengan benar - baik di server ala

PrintMotd no
PrintLastLog no

dan

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

Atau menambahkan ~/.hushlogin untuk setiap pengguna.

Petunjuk, untuk ~/.hushlogin, tambahkan ke /etc/skel sehingga direktori beranda pengguna baru dibuat dengan file tersebut.

Pembaruan:

Tanpa informasi lebih lanjut tentang pekerjaan cron cadangan Anda, satu-satunya saran saya adalah mengarahkan output dari perintah ke file (atau biarkan cron menangkapnya di email) dan output dari sesi ssh ke /dev/null. Sesuatu seperti:

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

Atau

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

Saya harus bermain-main dengan perintah sedikit, tetapi itu akan membantu Anda memulai.

Solusi 2:

Jika Anda menginginkan ini berdasarkan per pengguna, lakukan saja touch ~/.hushlogin dan Anda siap dengan OpenSSH.

Perbarui :Seperti yang ditunjukkan di tempat lain, pam_motd dapat dikonfigurasi untuk tidak menggunakan .hushlogin per pengguna; centang /etc/login.defs untuk HUSHLOGIN_FILE . Ini dapat dikonfigurasi agar semua pengguna terdaftar di /etc/hushlogins atau serupa.

Solusi 3:

@note Semua contoh menganggap Anda telah menetapkan variabel connectionString dengan sesuatu seperti [email protected] .

Bagaimana saya mendapatkan solusinya

Menggunakan ssh -T harus bekerja untuk perintah sederhana. Misalnya ini tidak mencetak informasi tambahan apa pun:

ssh -T $connectionString "echo 'blah'"

Masalahnya adalah ketika Anda mencoba menggunakan here-doc untuk menjalankan banyak perintah. Misalnya - di bawah TIDAK akan berfungsi - ini akan menggemakan pesan hari ini (MoTD) dan juga mungkin menunjukkan kepada Anda "stdin:bukan tty".

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

Untuk mengatasi masalah ini, Anda perlu terlebih dahulu menyimpan perintah ke variabel lokal dan mengirimkannya ke server jarak jauh.

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

Tapi itu berantakan...

Solusi terakhir

Buatlah fungsi universal (perhatikan bahwa ini dapat menggunakan string atau HEREDOC sebagai perintah).

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

Contoh

Gunakan ini seperti ini:

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

Atau seperti itu:

silentSsh $connectionString "echo 'blah'"

Atau seperti itu:

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

Atau bahkan seperti itu:

silentSsh $connectionString < getlines.sh

Solusi 4:

Bagaimana dengan peretasan ini?;-P

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

Berikut ini adalah tidak berlaku:

Meneruskan -T ke ssh untuk menonaktifkan alokasi tty:

ssh -T machineName 'echo foo'

Solusi 5:

Sistem operasi apa ini? Pada beberapa sistem (seperti ubuntu) motd tidak dicetak oleh server ssh (PrintMotd di /etc/ssh/sshd_config), tetapi oleh pam dengan pam_motd. Jika demikian, Anda mungkin tidak dapat mengontrolnya dari klien.


Linux
  1. Mencegah Koneksi Nfs Rusak Dari Pembekuan Sistem Klien?

  2. Koneksi Ssh Ditolak Dari Dalam Lan?

  3. Loop Mengabaikan Perubahan Variabel Dari Subkulit Di Latar Belakang?

  1. Bagaimana Cara Menghentikan Orca Dari Memulai Saat Masuk?

  2. Izinkan login root ssh hanya dengan otentikasi kunci publik

  3. SSH - Cara memasukkan perintah -t di file ~/.ssh/config

  1. Ssh – Bagaimana Cara Mempercepat Login Ssh yang Terlalu Lambat?

  2. Bagaimana Mendeteksi Jika Shell Dikendalikan Dari Ssh?

  3. Temukan alamat IP klien dalam sesi SSH