0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ssh接続時に表示される最終ログイン情報を増やしたい

Last updated at Posted at 2024-09-16

ssh接続時に出力されるログイン履歴は最終(現在)しか表示されない。

Last login: Mon Sep 16 10:19:05 2024 from 192.168.x.xx

これの幅を増やしたいなと思ったので、ログイン履歴をlogファイルに書き込み、そこから読み込むようにした

# ログファイルのパス
LOGFILE="$HOME/.ssh/.log/all_sshauthlog.log"

# ログディレクトリが存在しない場合は作成
if [ ! -d "$HOME/.ssh/.log" ]; then
    mkdir -p "$HOME/.ssh/.log"
fi

# ログファイルにSSH認証の成功・失敗の履歴を記録
sudo journalctl -u ssh | grep -E "Accepted|Failed password" >> "$LOGFILE"

# カラーコードの設定
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # 色リセット

# ログイン履歴の最後の3回をフォーマットして表示
echo -e "最後の3回のログイン履歴:\n"
tail -n 3 "$LOGFILE" | while read line; do
    # 日付を抽出
    DATE=$(echo "$line" | awk '{print $1, $2, $3}')
    # 成功か失敗かを判定
    if echo "$line" | grep -q "Accepted"; then
        STATUS="${GREEN}Accepted${NC}"
    else
        STATUS="${RED}Failed${NC}"
    fi
    # IPアドレスを抽出
    IP=$(echo "$line" | grep -oE '([0-9]{1,3}\.){3}[0-9]{1,3}')

    # 結果を表示
    echo -e "${YELLOW}$DATE${NC}"
    echo -e "  Status: $STATUS"
    echo -e "  IP Address: ${YELLOW}$IP${NC}\n"
done

これだけだと接続時に実行されないので
.bashrcから上記のスクリプトを呼び出すようにする。

chmod +x sshAuth.sh
vi .bashrc

.bashrc
~/.ssh/sshAuth.sh

結果

Sep 16 10:19:04
  Status: Accepted
  IP Address: 192.168.3.34

Sep 16 10:25:43
  Status: Accepted
  IP Address: 192.168.3.34

  Sep 16 10:29:20
  Status: Accepted
  IP Address: 192.168.3.34

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?