Bagaimana cara saya mengedit pesan "login terakhir" SSH?

16

Saya ingin mengedit Last login:informasi yang dicetak bersama dengan pesan hari ini, namun saya tidak dapat menemukan skrip yang menghasilkan dan menggemakan.

Di mana itu didefinisikan, dalam skrip shell yang mudah diedit, atau ditutup dalam biner?


Catatan, ini berbeda dari ServerFault: Bagaimana saya bisa mengedit pesan sambutan saat ssh mulai? . Informasi "login terakhir" tidak dicetak dari dalam /etc/update-motd.d/, tetapi sebaliknya ditentukan dengan mengatur PrintLastLogbendera, dan karenanya tidak dapat diedit seperti bagian lain dari pesan hari itu.

IQAndreas
sumber
Informasi ini disimpan dalam utmpdan wtmpfile (tergantung pada distribusi, check in /var/run/utmpatau /var/log/utmpatau lihat di /vardirektori). File-file ini tidak disimpan sebagai teks, tetapi sebagai biner, jadi Anda perlu alat khusus untuk mengeditnya. File utmp melacak status login setiap pengguna saat ini. File wtmp mencatat semua login dan riwayat logout. Anda akan memerlukan alat khusus untuk mengeditnya, tetapi saya tidak dapat menemukan apa-apa.
phoops

Jawaban:

14

Sepertinya format baris yang dicetak dikompilasi menjadi sshd:

[me@risby ~]$ ssh lory
Last login: Fri May 23 10:59:01 2014 from 2a01:2c0:e:300:7271:bcff:feac:445a
[me@lory ~]$ strings /usr/sbin/sshd | grep -i "last login"
Last login: %s
Last login: %s from %s

Saya tidak dapat melihat opsi konfigurasi untuk mengubahnya, jadi Anda perlu mengedit sumber dan mengkompilasi ulang.

Sunting : Dalam kasus terbatas, Anda dapat menemukan sumber di http://www.openssh.org . Tetapi Anda tidak memberi tahu kami bahwa Anda menggunakan OpenSSH, atau apa pun tentang platform Anda, jadi sulit untuk lebih spesifik. Jika ini adalah sistem Linux, Anda akan jauh lebih baik untuk mendapatkan sumber yang sesuai dengan distro Anda dengan cara biasa, dan mengkompilasi ulang melalui mekanisme spesifik distro Anda.

Tapi sungguh, Anda tidak boleh melakukan ini sama sekali kecuali Anda memiliki alasan bisnis yang sangat menarik untuk melakukannya: Anda membuat mimpi buruk pemeliharaan untuk diri Anda sendiri, pergi ke versi kompilasi manual dari paket keamanan-sensitif.

MadHatter
sumber
Di mana kode sumber di belakang sshddapat ditemukan?
IQAndreas
1
Sebenarnya, saya merencanakan sesuatu yang lain dengan sumbernya. Saya ingin melihat bagaimana mereka mem-parsing data dari wtmp, mengatur PrintLastLogbendera no, dan membuat kembali pemberitahuan "login terakhir" dengan skrip saya sendiri di tempat update-motd.d. Jauh lebih ramah perawatan. :)
IQAndreas
1
Saya sering melihat motdoutput tidak sepenuhnya terbaru. Jadi saya pikir update-motdmungkin tidak dapat dijalankan pada setiap login.
kasperd
@kasperd Memperbarui setiap 10 menit sebagai tugas cron. Ini untuk membantu jika mencoba melakukan sesuatu "lambat" seperti mengambil string dari internet, sehingga tidak membuat server melambat setiap kali seseorang masuk.
IQAndreas
3
Pesan "login terakhir" adalah khusus untuk pengguna, sementara motd di seluruh sistem. Saya tidak yakin bagaimana Anda ingin membuat ulang pesan. Juga, ada orang yang benar-benar membaca pesan ini, dan ingin seakurat mungkin.
Simon Richter
5

Informasi login terakhir disimpan di /var/log/wtmpatau /var/log/utmpmereka adalah file biner. Tanpa melihat kode sumber untuk sshd saya tidak dapat sepenuhnya yakin tetapi saya berharap bahwa itu mengambil informasi dari file-file tersebut menggunakan panggilan sistem yang sesuai

Sepertinya tidak mungkin Anda akan menemukan cara untuk dengan mudah mengubah informasi ini setelah semua bagian dari keamanan pengguna.


Jika Anda benar-benar menginginkan detail gory maka Anda perlu melihat kode sumber untuk fungsi login_get_lastlogyang dapat ditemukan diloginrec.c

user9517
sumber
@lain +1 karena saran kode sumber - meskipun saya tidak berpikir itu adalah solusi berdarah, yang dia butuhkan hanyalah mirror git lokal. Saya menggunakan sumber bukan dari iblis bahkan untuk sysadms.
peterh
2

Solusi lain adalah dengan menghapus layar di awal file motd seperti:

^[[H^[[2J
whatever was originally in the motd file here

Catatan: ganti ^[dengan simbol escape (yang dapat Anda buat di editor nano dengan menekan tombol berikut: esc+ v+ esc)

pengguna514464
sumber
-2

Mungkin beberapa solusi kalau-kalau Anda hanya ingin mengubah IP login terakhir?

Misalnya, Anda dapat mengubah alamat IP yang ditampilkan menjadi "localhost" dengan masuk ke ssh lagi dari mesin yang dikendalikan dari jarak jauh!

Login jauh melalui ssh >> ssh username @ localhost

Sekarang IP terakhir yang tercatat adalah localhost

kafein
sumber