web-dev-qa-db-ja.com

motdの日付形式を変更する方法

サーバーにSSHで接続するたびに、サーバーは最終ログイン日時を出力します。しかし、私はそのフォーマットが好きではありません。例:

Last login: Sun Jan 31 12:12:13 2016 from 127.0.0.1

(構成内の)メッセージを無効にし、代わりにその場所をmotd(00ヘッダー)に変更したいと思います。どうすればいいですか?外観の例:

Last login: 2016-01-31 12:12:13 from 127.0.0.1
1
Avamander

Serverfaultの関連する質問に示されているように、 SSHの「最終ログイン」メッセージを編集するにはどうすればよいですか? 、行自体は/usr/sbin/sshdバイナリに組み込まれています。したがって、それを編集するには、ソースコードを編集して自分で再コンパイルする必要があります。これは、必要以上に面倒で手間がかかります。

Serverfaultの質問で見つかった結果の確認

DIR:/xieerqi
skolodya@ubuntu:$ file /usr/sbin/sshd                                          
/usr/sbin/sshd: ELF 64-bit LSB  shared object, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=b0aaeed8d674586459d21eb2d548a848c33de3a9, stripped

DIR:/xieerqi
skolodya@ubuntu:$ strings /usr/sbin/sshd | grep -i "last login"                
Last login: %s
Last login: %s from %s

ただし、その日のメッセージと最後のログインを出力しないようにsshdに指示することはできます( この回答 による)

任意のエディターでファイル/etc/ssh/sshd_configを開きます。たとえば、コマンドラインエディターを使用する場合はSudoを使用し、GUIエディターを使用する場合はgksuを使用します。

  Sudo vi /etc/ssh/sshd_config

次の行を追加します

PrintMotd no
PrintLastLog no

次の関数を上部の$HOME/.bashrcファイルに配置できます

function ssh_login_date
 {
 if [ ! -z "$SSH_CLIENT" ]; then
   printf "Last login %s from %s \n" "$( date +%F" "%H":"%M":"%S  )" "$(echo $SSH_CLIENT|  awk '{print $1}' )"
 fi
}

そして、ファイルの最後にある関数を呼び出します

ssh_login_date
2