Làm cách nào để chỉnh sửa tin nhắn SSH đăng nhập cuối cùng của SSH?


16

Tôi muốn chỉnh sửa Last login:thông tin được in ra cùng với thông điệp trong ngày, nhưng tôi không thể tìm thấy tập lệnh tạo và lặp lại.

Nó được định nghĩa ở đâu, trong một tập lệnh shell dễ chỉnh sửa hoặc đóng trong nhị phân?


Lưu ý, điều này khác với ServerFault: Làm cách nào tôi có thể chỉnh sửa thông báo chào mừng khi ssh bắt đầu? . Thông tin "lần đăng nhập cuối cùng" không được in ra từ bên trong /etc/update-motd.d/mà thay vào đó được xác định bằng cách đặt PrintLastLogcờ và do đó không thể chỉnh sửa như các phần khác của tin nhắn trong ngày.


Thông tin này được lưu trong utmpwtmpcác tệp (tùy thuộc vào phân phối, đăng ký /var/run/utmphoặc /var/log/utmphoặc tìm trong /varthư mục). Các tệp này không được lưu dưới dạng văn bản, mà dưới dạng nhị phân, vì vậy bạn sẽ cần các công cụ đặc biệt để chỉnh sửa chúng. Tệp utmp theo dõi trạng thái đăng nhập hiện tại của mỗi người dùng. Tệp wtmp ghi lại tất cả thông tin đăng nhập và đăng xuất. Bạn sẽ cần các công cụ đặc biệt để chỉnh sửa chúng, nhưng tôi không thể tìm thấy bất cứ thứ gì thực sự.
phoops

Câu trả lời:


14

Có vẻ như định dạng của dòng in được biên dịch thành 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

Tôi không thể thấy bất kỳ tùy chọn cấu hình nào để thay đổi điều đó, vì vậy bạn sẽ cần chỉnh sửa nguồn và biên dịch lại.

Chỉnh sửa : Trong trường hợp giới hạn, bạn có thể tìm nguồn tại http://www.openssh.org . Nhưng bạn không nói với chúng tôi rằng bạn đang sử dụng OpenSSH hoặc bất cứ điều gì về nền tảng của bạn, vì vậy thật khó để cụ thể hơn. Nếu đó là một hệ thống Linux, bạn sẽ làm tốt hơn nhiều để có được nguồn phù hợp với bản phân phối của mình theo cách thông thường và biên dịch lại thông qua các cơ chế dành riêng cho bản phân phối của bạn.

Nhưng thực sự, bạn không nên làm điều này ở tất cả trừ khi bạn có một lý do kinh doanh vô cùng hấp dẫn, làm như vậy: bạn đang làm một bảo trì cơn ác mộng cho chính mình, đi đến một phiên bản tay biên soạn của một gói bảo mật nhạy cảm.


Mã nguồn phía sau sshdcó thể được tìm thấy ở đâu?
IQAndreas

1
Trên thực tế, tôi đã lên kế hoạch cho một cái gì đó khác với nguồn. Tôi muốn xem cách họ phân tích dữ liệu từ đó wtmp, đặt PrintLastLogcờ thành novà tạo lại thông báo "lần đăng nhập cuối cùng" với tập lệnh của riêng tôi được đặt vào update-motd.d. Bảo trì thân thiện hơn nhiều. :)
IQAndreas

1
Tôi thường xuyên thấy motdđầu ra không hoàn toàn cập nhật. Vì vậy, tôi nghĩ rằng update-motdcó thể không được chạy trên mỗi lần đăng nhập.
kasperd

@kasperd Nó cập nhật cứ sau 10 phút như một công việc định kỳ. Điều này là để giúp đỡ trong trường hợp nó cố gắng làm một cái gì đó "chậm" như lấy một chuỗi từ internet, vì vậy nó không làm cho máy chủ chậm lại mỗi khi ai đó đăng nhập.
IQAndreas

3
Thông báo "lần đăng nhập cuối cùng" là dành riêng cho người dùng, trong khi motd là toàn hệ thống. Tôi không chắc bạn muốn tạo lại tin nhắn như thế nào. Ngoài ra, có những người thực sự đọc tin nhắn này, và muốn nó chính xác nhất có thể.
Simon Richter

5

Thông tin đăng nhập cuối cùng được lưu trữ trong /var/log/wtmphoặc /var/log/utmpchúng là các tệp nhị phân. Không nhìn vào mã nguồn cho sshd, tôi không thể hoàn toàn chắc chắn nhưng tôi hy vọng rằng nó sẽ lấy thông tin từ các tệp đó bằng các cuộc gọi hệ thống phù hợp

Dường như bạn sẽ không tìm được cách dễ dàng thay đổi thông tin này sau tất cả các phần bảo mật của người dùng.


Nếu bạn thực sự muốn các chi tiết chính thì bạn cần xem mã nguồn cho chức năng login_get_lastlogcó thể tìm thấy trongloginrec.c


@lain +1 vì đề xuất mã nguồn - mặc dù tôi không nghĩ đó là một giải pháp tốt, tất cả những gì anh ta cần là một gương git cục bộ. Imho sử dụng nguồn không phải từ quỷ ngay cả đối với các hệ thống.
peterh - Tái lập Monica

2

Một giải pháp khác là xóa màn hình ở đầu tập tin motd như vậy:

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

Lưu ý: thay thế ^[bằng biểu tượng thoát (mà bạn có thể tạo trong trình chỉnh sửa nano bằng cách nhấn các phím sau: esc+ v+ esc)


-2

Có lẽ một số công việc xung quanh trong trường hợp bạn chỉ muốn thay đổi IP đăng nhập cuối cùng?

Ví dụ: bạn có thể thay đổi địa chỉ IP được hiển thị thành "localhost" bằng cách đăng nhập lại vào ssh từ máy được điều khiển từ xa!

Đăng nhập từ xa qua ssh >> ssh tên người dùng @ localhost

Bây giờ IP cuối cùng được ghi sẽ là localhost

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.