SSHの「最終ログイン」メッセージを編集するにはどうすればよいですか?


16

Last login:その日のメッセージと一緒に印刷される情報を編集したいのですが、生成してエコー出力するスクリプトが見つかりません。

編集しやすいシェルスクリプトで定義されているのか、バイナリで閉じられているのか?


これはServerFaultとは異なることに注意してください。sshの起動時にウェルカムメッセージを編集するにはどうすればよいですか?。「最終ログイン」情報は内部からは出力されません/etc/update-motd.d/が、代わりにPrintLastLogフラグを設定することで定義されるため、その日のメッセージの他の部分のように編集することはできません。


この情報は、内に保存されたutmpwtmpファイル(分布に応じて、チェック中/var/run/utmp/var/log/utmpまたは表情で/varディレクトリ)。これらのファイルはテキストとして保存されるのではなく、バイナリとして保存されるため、編集するには特別なツールが必要です。utmpファイルは、各ユーザーの現在のログイン状態を追跡します。wtmpファイルには、すべてのログインとログアウトの履歴が記録されます。それらを編集するには特別なツールが必要になりますが、実際には何も見つかりませんでした。
フープ

回答:


14

印刷された行の形式は次のようにコンパイルされているように見えます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

変更するための設定オプションも表示されないため、ソースを編集して再コンパイルする必要があります。

編集:限定的なケースでは、http: //www.openssh.orgでソースを見つけることができます。しかし、OpenSSHを使用している、またはプラットフォームについて何かを使用しているとは言わないため、より具体的に説明するのは困難です。Linuxシステムの場合は、通常の方法でディストリビューションに適したソースを取得し、ディストリビューション固有のメカニズムを使用して再コンパイルすることをお勧めします。

しかし、実際には、非常に説得力のあるビジネス上の理由がない限り、これ行うべきではありません。手作業でコンパイルされたセキュリティに敏感なパッケージに行くために、自分でメンテナンスの悪夢を作っています。


背後のソースコードはどこにsshdありますか?
IQAndreas

1
実際、私はソースで何か他のものを計画していました。からのデータの解析方法wtmpPrintLastLogフラグの設定方法no、およびに配置された自分のスクリプトで「最終ログイン」通知を再作成する方法を確認したかったのupdate-motd.dです。はるかにメンテナンスに優しい。:)
IQAndreas

1
motd出力が完全に最新ではないことがよくあります。そのupdate-motdため、ログインごとに実行されるとは限らないと考えています。
カスペルド

@kasperd cronジョブとして10分ごとに更新します。これは、インターネットから文字列を取得するように、それはサーバがで毎回誰かのログを遅くことはないので、「遅い」何かをしようとする場合に支援することです。
IQAndreas

3
「最終ログイン」メッセージはユーザー固有ですが、motdはシステム全体です。メッセージを再作成する方法がわかりません。また、実際にこのメッセージを読んで、できるだけ正確にしたい人もいます。
サイモンリヒター

5

最後のログイン情報は、バイナリファイルに保存されている/var/log/wtmp/var/log/utmp、バイナリファイルです。sshdのソースコードを見ることなく、私は完全には確信できませんが、適切なシステムコールを使用してそれらのファイルから情報を取得することを期待します。

ユーザーのセキュリティのすべての部分の後、この情報を簡単に変更する方法を見つけることはまずないようです。


本当に面倒な詳細が必要な場合は、次の場所にある関数のソースコードを調べる必要login_get_lastlogがあります。loginrec.c


@lain +1はソースコードの提案のためです-面倒な解決策ではないと思いますが、彼が必要とするのはローカルgitミラーだけです。ソースを使用している私見は、sysadmにとってさえ悪魔からではありません。
peterh-モニカの復元

2

別の解決策は、次のようにmotdファイルの先頭の画面をクリアすることです。

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

注:^[エスケープ記号に置き換えます(次のキーを押してnanoエディターで作成できます:esc+ v+ esc


-2

おそらく、最後のログインIPを変更したいだけの場合、いくつかの回避策がありますか?

たとえば、リモート制御されたマシンから再度sshにログインして、表示されたIPアドレスを「localhost」に変更できます。

ssh >> ssh username @ localhostを介したリモートログイン

これで、最後に記録されたIPはlocalhostになります

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.