ssh monitoring · session tracking · login alerts
Who logged into your servers last night? With the AlertKick agent installed, every SSH login on a Linux server becomes a session record: the user, the source IP, when they logged in, and how long they stayed. A login from an address you don't trust pages the engineer on call. One agent, no rules to write.
critical alert · off-hours, unknown source · on-call engineer paged
Sample data. Your real sessions are on each server's SSH Logins tab.
Comes with the agent on the Professional and Business plans. See pricing.
Every server gets an SSH Logins tab with one row per session. Expand a row to see the session from login to logout.
A root session that ran 197 processes in two minutes reads differently from one that ran 11. A login notification only tells you someone arrived.
The agent sees each login with eBPF at the kernel and sends the session off the host as it happens. There is no PAM line to add and no script to copy onto every server. If someone gets root and edits /etc/pam.d/sshd, their login has already left the box. Session tracking is on for every server with security monitoring enabled, so the server you forgot about is covered too.
Tell AlertKick where logins should come from. The SSH allowed source IPs list holds your bastion hosts, office ranges, and home addresses, as single IPs or CIDR ranges. You set it once for the whole account, and every login gets one of three verdicts:
The source IP is on your list.
The source IP is not on your list. A critical alert opens the moment the connection is made.
No list is set yet. The record says it was never checked, instead of calling it safe.
When an SSH rule fires, AlertKick opens one alert per server and rule, and your escalation policy takes it from there. The engineer on call gets it by mobile push, Slack, SMS, WhatsApp, Telegram, or email, whichever the policy uses. Acknowledging from the phone stops the escalation. If nobody acknowledges, the policy pages the next person.
AI triage writes the alert text before it goes out, so the message says why the login looked wrong - outside business hours, unknown source, no deployment going on - and not just a bare IP address.
The SSH rules ship with AlertKick under Security -> Rules. Each one is a toggle:
You set business hours once: timezone, start and end hour, and which days are workdays. A login from your CI runner at 14:00 on a Tuesday matches neither critical rule. Root from an unknown address at 02:00 matches both.
Turn on command capture for a server and the session timeline also lists the command line of each process the session ran. Arguments can hold passwords and tokens, so the agent redacts them on the host before anything leaves it. Redaction is best-effort, which is why capture is off by default and you choose the servers where it runs.
Most servers need interactive SSH for a few hours a month. SSH lockdown, on each server's Maintenance tab, denies new SSH logins outside the windows you set.
Logins during an open window still get session records and trust verdicts. Lockdown is also what Change Tracking & Control uses to open a host for an approved change and lock it again afterwards.
Add the server
In the dashboard, go to Servers -> Add server.
Run one command
Paste the install line into a root shell. It detects the distro and architecture and starts the agent under systemd.
Set hours and trusted IPs
Add your business hours and allowed source IPs. Then SSH in from an address not on the list and watch the alert arrive.
# Copied from Servers -> Add server. Unique to each host.
curl -sSL 'https://app.alertkick.com/app/agent-install/<host-id>/script/<hash>?...' | sh Debian, Ubuntu, RHEL, Rocky, Alma, Fedora, and others, on amd64 or arm64. The full walkthrough is in the install guide, and the rules are covered in the SSH login monitoring docs.
Change Tracking & Control
Commands and file changes tied to the person who made them, checked against the windows when change was allowed.
eBPF Security Monitoring
The rest of the detections from the same agent: container shells, rootkits, file changes, MITRE ATT&CK mapping, and AI triage.
On-Call Rosters & Escalation
The rosters and escalation policies that decide who gets paged when an SSH rule fires.
Free auth.log analyzer
Paste an auth.log and see failed and successful SSH logins per IP. Parsed in your browser, nothing uploaded.
Guide: SSH login notifications
The DIY PAM hook that posts to Slack or Telegram, and where it falls short.
Install one agent. Get security monitoring, infrastructure alerts, and on-call management - all included with every host.