{"id":407,"date":"2026-10-17T15:39:24","date_gmt":"2026-10-17T19:39:24","guid":{"rendered":"https:\/\/securebydefault.io\/blog\/?p=407"},"modified":"2026-10-17T15:42:18","modified_gmt":"2026-10-17T19:42:18","slug":"check-failed-ssh-logins-linux","status":"publish","type":"post","link":"https:\/\/securebydefault.io\/blog\/check-failed-ssh-logins-linux\/","title":{"rendered":"How to Check Failed SSH Login Attempts on Linux"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/securebydefault.io\/blog\/wp-content\/uploads\/2026\/10\/check-failed-ssh-logins-linux-1200x675-1-1024x576.jpg\" alt=\"\" class=\"wp-image-408\" srcset=\"https:\/\/securebydefault.io\/blog\/wp-content\/uploads\/2026\/10\/check-failed-ssh-logins-linux-1200x675-1-1024x576.jpg 1024w, https:\/\/securebydefault.io\/blog\/wp-content\/uploads\/2026\/10\/check-failed-ssh-logins-linux-1200x675-1-300x169.jpg 300w, https:\/\/securebydefault.io\/blog\/wp-content\/uploads\/2026\/10\/check-failed-ssh-logins-linux-1200x675-1-768x432.jpg 768w, https:\/\/securebydefault.io\/blog\/wp-content\/uploads\/2026\/10\/check-failed-ssh-logins-linux-1200x675-1.jpg 1200w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">You ran the command every tutorial tells you to run:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>grep \"Failed password\" \/var\/log\/auth.log<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">And nothing came back. No error, no results, just a fresh prompt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That&#8217;s an easy place to decide something is broken, or that your server is suspiciously quiet. Usually it&#8217;s neither. Linux can keep SSH logs in more than one place, and you may simply be looking in the wrong one.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This guide covers where SSH logs live, how to read a failed-login line, how to count which addresses and usernames show up most, and how to check whether anything actually got in. It&#8217;s the reference version of a story I wrote up in <a href=\"https:\/\/newsletter.securebydefault.io\/p\/how-to-read-linux-logs-ssh-failed-logins\">the newsletter<\/a>, where I did this on a real server.<\/p>\n\n\n\n<p class=\"has-ast-global-color-2-color has-text-color has-link-color has-medium-font-size wp-elements-1 wp-block-paragraph\">Where SSH logs live on Linux<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">There are two main places to look.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>1. The systemd journal.<\/strong> Most modern distributions that use systemd keep logs in the journal, and you read them with <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-ast-global-color-0-color\"><em>journalctl<\/em><\/mark>. This is usually the first place to check.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>2. Log files such as<\/strong> <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-ast-global-color-0-color\"><em>\/var\/log\/auth.log<\/em><\/mark><strong>.<\/strong> On Debian and Ubuntu, authentication messages are written to <em><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-ast-global-color-0-color\">\/var\/log\/auth.log<\/mark> <\/em>by a logging service called rsyslog. On RHEL-family systems the equivalent file is usually <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-ast-global-color-0-color\"><em>\/var\/log\/secure<\/em><\/mark>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A system can have both, only one, or one that has only just started collecting. To see what you have:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ls -l \/var\/log\/auth.log\nsystemctl status rsyslog<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">If the file doesn&#8217;t exist, or rsyslog isn&#8217;t running, the journal is where your history is. If the file exists but is small, it may only cover the time since rsyslog started.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">On my own server, <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-ast-global-color-0-color\"><em>auth.log<\/em><\/mark> existed but was tiny, because rsyslog had only recently started. The older records were all in the journal. On a stock Ubuntu install I tested afterward, the file existed with content, so this varies from machine to machine. That&#8217;s exactly why it&#8217;s worth checking rather than assuming.<\/p>\n\n\n\n<p class=\"has-ast-global-color-2-color has-text-color has-link-color has-medium-font-size wp-elements-2 wp-block-paragraph\">Find the SSH service name<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">The journal is organized by service. The SSH server&#8217;s name depends on the distribution:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Debian and Ubuntu: <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-ast-global-color-0-color\"><em>ssh<\/em><\/mark><\/li>\n\n\n\n<li>Many others, including RHEL-family systems: <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-ast-global-color-0-color\"><em>sshd<\/em><\/mark><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">If you&#8217;re not sure, ask systemd:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>systemctl list-units --type=service | grep -i ssh<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Then read that service&#8217;s logs:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>journalctl -u ssh<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><em><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-ast-global-color-0-color\">-u<\/mark><\/em> means &#8220;this unit,&#8221; which here is the SSH service. On a system that uses <em><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-ast-global-color-0-color\">sshd<\/mark><\/em>, run <em><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-ast-global-color-0-color\">journalctl -u sshd<\/mark><\/em>.<\/p>\n\n\n\n<p class=\"has-ast-global-color-2-color has-text-color has-link-color has-medium-font-size wp-elements-3 wp-block-paragraph\">You may need permission<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">Reading the full journal requires <em><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-ast-global-color-0-color\">sudo<\/mark><\/em>, or membership in the <em><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-ast-global-color-0-color\">adm <\/mark><\/em>or <em><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-ast-global-color-0-color\">systemd-journal<\/mark><\/em> group. Without it, a normal user gets this hint and no results:<\/p>\n\n\n\n<style>\n.callout-cyan { background: #ECFEFF; border-left: 4px solid #0E7490; border-radius: 4px; padding: 14px 16px; font-family: Arial, sans-serif; font-size: 14px; line-height: 1.6; color: #1f2937; margin-bottom: 20px; }\n.callout-cyan .callout-title { font-weight: 700; color: #0E7490; margin-bottom: 6px; }\n<\/style>\n<strong>\n<div class=\"callout-cyan\">\nHint:<br> You are currently not seeing messages from other users and the system.\n      Users in groups &#8216;adm&#8217;, &#8216;systemd-journal&#8217; can see all messages.<br>\n&#8212; No entries &#8212;\n<\/div>\n<\/strong>\n\n\n\n<p class=\"wp-block-paragraph\">If you see that permissions hint followed by<em><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-ast-global-color-0-color\"> &#8212; No entries &#8212;<\/mark><\/em>, rerun the command with <em><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-ast-global-color-0-color\">sudo <\/mark><\/em>before concluding the log is empty. <em><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-ast-global-color-0-color\">&#8212; No entries &#8212;<\/mark><\/em> by itself can also simply mean there are no matching records.<\/p>\n\n\n\n<p class=\"has-ast-global-color-2-color has-text-color has-link-color has-medium-font-size wp-elements-4 wp-block-paragraph\">Read one failed-login line<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">Here&#8217;s the format of a failed SSH password attempt. The address below is from a range reserved for documentation, not a real one:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>May 19 18:09:08 localhost sshd&#91;2379971]: Failed password for root from 203.0.113.45 port 45232 ssh2<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Left to right:<\/p>\n\n\n\n<div style=\"overflow-x:auto; margin:20px 0;\">\n  <table style=\"\n    width:100%;\n    border-collapse:collapse;\n    background:#23272b;\n    color:#f3f4f6;\n    font-family:Arial, Helvetica, sans-serif;\n    font-size:15px;\n    line-height:1.35;\n    border:1px solid #4b5563;\n  \">\n    <thead>\n      <tr style=\"background:#d7e2f1; color:#111827;\">\n        <th style=\"\n          text-align:left;\n          padding:6px 8px;\n          border:1px solid #4b5563;\n          width:50%;\n          font-weight:700;\n        \">\n          Part\n        <\/th>\n        <th style=\"\n          text-align:left;\n          padding:6px 8px;\n          border:1px solid #4b5563;\n          width:50%;\n          font-weight:700;\n        \">\n          Meaning\n        <\/th>\n      <\/tr>\n    <\/thead>\n\n    <tbody>\n      <tr>\n        <td style=\"padding:5px 8px; border:1px solid #4b5563; vertical-align:top;\">\n          <span style=\"font-family:Consolas,'Courier New',monospace; color:#67d5ff;\">\n            May 19 18:09:08\n          <\/span>\n        <\/td>\n        <td style=\"padding:5px 8px; border:1px solid #4b5563;\">\n          when it happened\n        <\/td>\n      <\/tr>\n\n      <tr>\n        <td style=\"padding:5px 8px; border:1px solid #4b5563; vertical-align:top;\">\n          <span style=\"font-family:Consolas,'Courier New',monospace; color:#67d5ff;\">\n            localhost\n          <\/span>\n        <\/td>\n        <td style=\"padding:5px 8px; border:1px solid #4b5563;\">\n          the machine&#8217;s hostname\n        <\/td>\n      <\/tr>\n\n      <tr>\n        <td style=\"padding:5px 8px; border:1px solid #4b5563; vertical-align:top;\">\n          <span style=\"font-family:Consolas,'Courier New',monospace; color:#67d5ff;\">\n            sshd[2379971]\n          <\/span>\n        <\/td>\n        <td style=\"padding:5px 8px; border:1px solid #4b5563;\">\n          the program that wrote it, and its process ID\n        <\/td>\n      <\/tr>\n\n      <tr>\n        <td style=\"padding:5px 8px; border:1px solid #4b5563; vertical-align:top;\">\n          <span style=\"font-family:Consolas,'Courier New',monospace; color:#67d5ff;\">\n            Failed password for root\n          <\/span>\n        <\/td>\n        <td style=\"padding:5px 8px; border:1px solid #4b5563;\">\n          what happened, and which account\n        <\/td>\n      <\/tr>\n\n      <tr>\n        <td style=\"padding:5px 8px; border:1px solid #4b5563; vertical-align:top;\">\n          <span style=\"font-family:Consolas,'Courier New',monospace; color:#67d5ff;\">\n            from 203.0.113.45 port 45232\n          <\/span>\n        <\/td>\n        <td style=\"padding:5px 8px; border:1px solid #4b5563;\">\n          where the attempt came from\n        <\/td>\n      <\/tr>\n\n      <tr>\n        <td style=\"padding:5px 8px; border:1px solid #4b5563; vertical-align:top;\">\n          <span style=\"font-family:Consolas,'Courier New',monospace; color:#67d5ff;\">\n            ssh2\n          <\/span>\n        <\/td>\n        <td style=\"padding:5px 8px; border:1px solid #4b5563;\">\n          the SSH protocol version\n        <\/td>\n      <\/tr>\n    <\/tbody>\n  <\/table>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Two variations are worth recognizing:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-ast-global-color-0-color\"><em>Failed password for root<\/em><\/mark> means a password authentication attempt targeted the root account and failed. By itself, that line does not tell you why authentication failed or whether password login for root is actually allowed.<\/li>\n\n\n\n<li><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-ast-global-color-0-color\"><em>Failed password for invalid user admin<\/em><\/mark> means that username doesn&#8217;t exist on the server at all. Automated scanners guess lots of names, so you&#8217;ll see plenty of these.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">You&#8217;ll also see lines like <em><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-ast-global-color-0-color\">Invalid user &#8230; from &#8230;<\/mark><\/em> and <em><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-ast-global-color-0-color\">Connection closed by &#8230; [preauth]<\/mark><\/em>. The <em><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-ast-global-color-0-color\">preauth <\/mark><\/em>part means the connection closed before authentication finished.<\/p>\n\n\n\n<p class=\"has-ast-global-color-2-color has-text-color has-link-color has-medium-font-size wp-elements-5 wp-block-paragraph\">Check how many failed logins you have<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">A journal can be huge, and a command that reads all of it can take a long time. Limit the window and save the result to a file once, then search the file:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo journalctl -u ssh --no-pager --since \"7 days ago\" > ~\/ssh7.log\nwc -l ~\/ssh7.log<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Then count the failures:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>grep -c \"Failed password\" ~\/ssh7.log<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><em><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-ast-global-color-0-color\">grep -c<\/mark><\/em> prints the number of matching lines.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Some other time filters you can use with <em><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-ast-global-color-0-color\">&#8211;since<\/mark><\/em> and <em><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-ast-global-color-0-color\">&#8211;until: &#8220;today&#8221;<\/mark><\/em>, <em><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-ast-global-color-0-color\">&#8220;yesterday&#8221;, &#8220;2 hours ago&#8221;<\/mark><\/em>, or a full timestamp such as <em><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-ast-global-color-0-color\">&#8220;2026-10-01 12:00:00&#8221;<\/mark><\/em>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To watch new attempts as they arrive, follow the log live (press Ctrl+C to stop):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo journalctl -u ssh -f<\/code><\/pre>\n\n\n\n<p class=\"has-ast-global-color-2-color has-text-color has-link-color has-medium-font-size wp-elements-6 wp-block-paragraph\">Count which addresses and usernames show up most<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">Raw counts only tell you so much. The useful question is who, and which accounts they&#8217;re trying.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Which addresses?<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>grep \"Failed password\" ~\/ssh7.log | awk '{for(i=1;i&lt;=NF;i++) if($i==\"from\") print $(i+1)}' | sort | uniq -c | sort -rn | head<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Which usernames?<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>grep \"Failed password\" ~\/ssh7.log | sed -E 's\/.*for (invalid user )?(&#91;^ ]+) from.*\/\\2\/' | sort | uniq -c | sort -rn | head<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Both end with the same pattern, which is worth memorizing:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sort | uniq -c | sort -rn | head<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">It means: sort the lines, count the repeats, then show the most common first. You can put it after any command that prints one item per line.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">On the server I checked, seven different addresses accounted for 53 failed passwords in a week, and the username <em><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-ast-global-color-0-color\">root <\/mark><\/em>was tried more than 4 in 10 times. That&#8217;s one server over one week. It tells you what the pattern looks like, not what&#8217;s normal for your server.<\/p>\n\n\n\n<p class=\"has-ast-global-color-2-color has-text-color has-link-color has-medium-font-size wp-elements-7 wp-block-paragraph\">Did anyone actually get in?<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">Failed logins are noise. A successful login you don&#8217;t recognize is the thing that matters. Successful logins are recorded with the word <em><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-ast-global-color-0-color\">Accepted<\/mark><\/em>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>grep \"Accepted\" ~\/ssh7.log<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">You&#8217;ll see lines such as:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Accepted publickey for alice from 203.0.113.45 port 52437 ssh2: ED25519 SHA256:...\nAccepted password for alice from 203.0.113.45 port 52437 ssh2<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">For each one, ask three things: is that my account, is that my address, and is that a time I was logged in?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If you find an <em><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-ast-global-color-0-color\">Accepted <\/mark><\/em>login you can&#8217;t explain, treat the system as potentially compromised. Preserve the logs, work from a trusted session or provider console, isolate the system if appropriate, and rotate affected credentials from a trusted device. For a sensitive or production machine, rebuilding from a known-good state may be the safest option.<\/p>\n\n\n\n<p class=\"has-ast-global-color-2-color has-text-color has-link-color has-medium-font-size wp-elements-8 wp-block-paragraph\">Check what your SSH server actually allows<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">Seeing <em><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-ast-global-color-0-color\">Failed password for root<\/mark><\/em> in your logs means password logins for root are being attempted. It&#8217;s worth checking whether they&#8217;re even allowed:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo sshd -T | grep -i -E \"permitrootlogin|passwordauthentication\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><em><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-ast-global-color-0-color\">sshd -T<\/mark><\/em> validates the configuration and prints the effective settings SSH derives after combining its configuration files. It is a configuration check, not proof by itself that a running daemon has reloaded a newly edited file.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Don&#8217;t assume you know the answer. OpenSSH&#8217;s own upstream default for <em><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-ast-global-color-0-color\">PermitRootLogin<\/mark><\/em> is <em><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-ast-global-color-0-color\">prohibit-password<\/mark><\/em>, which blocks password logins for root, and <em><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-ast-global-color-0-color\">PasswordAuthentication<\/mark><\/em> defaults to <em><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-ast-global-color-0-color\">yes<\/mark><\/em>. But one fresh Ubuntu instance I checked printed this:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>permitrootlogin yes\npasswordauthentication yes<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">A new server isn&#8217;t automatically a hardened one. This was one test instance, not a universal Ubuntu default. Your provider image and Ubuntu version can change what ships enabled, so look rather than assume. Changing these settings safely is a topic of its own, and you should know how to test a change and keep a second session open before you touch them, or you can lock yourself out. I cover that in the next newsletter issue.<\/p>\n\n\n\n<p class=\"has-ast-global-color-2-color has-text-color has-link-color has-medium-font-size wp-elements-9 wp-block-paragraph\">Where to practice: a real server<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">You can learn everything above for free on a virtual machine on your own computer. A real server on the internet teaches you things a VM doesn&#8217;t, like how quickly the knocking starts.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">When I want a VPS to learn on, or a production server, my preference is <a href=\"https:\/\/www.akamai.com\/cloud\">Akamai Cloud<\/a> (formerly Linode) over AWS. It&#8217;s simpler to get started with, the pricing has been easier for me to follow, the support has been good in my experience, and the <a href=\"https:\/\/techdocs.akamai.com\/cloud-computing\/docs\">documentation<\/a> is excellent. It includes a guide on setting up and securing a new server, which is a good next read once you can see what&#8217;s knocking.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">AWS is a strong platform and worth learning too, especially if you&#8217;re aiming at cloud roles. This is just where I&#8217;d start a beginner.<\/p>\n\n\n\n<p class=\"has-ast-global-color-2-color has-text-color has-link-color has-medium-font-size wp-elements-10 wp-block-paragraph\">Frequently asked questions<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-ast-global-color-2-color\">Where are SSH logs on Linux?<\/mark><\/strong> Usually in the systemd journal (read with <em><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-ast-global-color-0-color\">journalctl -u ssh<\/mark><\/em>, or <em><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-ast-global-color-0-color\">-u sshd<\/mark><\/em> on some systems) and, on Debian and Ubuntu, also in \/var\/log\/auth.log if rsyslog is running. RHEL-family systems typically use <em><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-ast-global-color-0-color\">\/var\/log\/secure<\/mark><\/em>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Why is my<\/strong> <em><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-ast-global-color-0-color\">auth.log<\/mark><\/em> <strong>empty or missing?<\/strong> The log service that writes it may not be installed or may have only just started. Check <em><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-ast-global-color-0-color\">systemctl status rsyslog<\/mark><\/em> and look in the journal instead.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Why does<\/strong> <em><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-ast-global-color-0-color\">journalctl <\/mark><\/em><strong>show &#8220;No entries&#8221;?<\/strong> If you also see the permissions hint about not seeing messages from other users and the system, rerun the command with <em><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-ast-global-color-0-color\">sudo<\/mark><\/em>. Without that hint, <em><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-ast-global-color-0-color\">&#8212; No entries &#8212;<\/mark><\/em> may simply mean no matching records were found for that query.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Is a failed SSH login a sign I&#8217;ve been hacked?<\/strong> No. A failed login means someone tried and didn&#8217;t get in. A successful login you don&#8217;t recognize is what needs a response.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>How do I see only successful SSH logins?<\/strong> Search for <em><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-ast-global-color-0-color\">Accepted<\/mark><\/em>, for example <em><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-ast-global-color-0-color\">sudo journalctl -u ssh &#8211;no-pager &#8211;since &#8220;7 days ago&#8221; | grep &#8220;Accepted&#8221;<\/mark><\/em>.<\/p>\n\n\n\n<div style=\"\n  margin:32px 0 24px;\n  padding:28px 26px;\n  background:#081321;\n  border:1px solid #17466a;\n  border-radius:12px;\n  color:#eef5ff;\n  font-family:Arial, Helvetica, sans-serif;\n  box-shadow:0 0 24px rgba(0,212,255,0.08);\n\">\n  <h3 style=\"\n    margin:0 0 12px;\n    font-size:26px;\n    line-height:1.25;\n    color:#ffffff;\n  \">\n    Want more hands-on projects like this?\n  <\/h3>\n\n  <p style=\"\n    margin:0 0 20px;\n    font-size:16px;\n    line-height:1.65;\n    color:#9fc5df;\n  \">\n    I share practical Linux, AWS, troubleshooting, cloud, and cybersecurity lessons every Tuesday, along with remote tech opportunities and career-focused resources.\n  <\/p>\n\n  <a href=\"https:\/\/newsletter.securebydefault.io\/\" target=\"_blank\" rel=\"noopener noreferrer\" style=\"\n       display:inline-block;\n       padding:13px 20px;\n       background:#00d4ff;\n       color:#03111d;\n       text-decoration:none;\n       font-weight:700;\n       font-size:16px;\n       border-radius:8px;\n     \">\n    Join the newsletter + get the free Linux Starter Kit\n  <\/a>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>SSH login attempts start showing up quickly on an internet-facing Linux server. Here\u2019s how to find failed SSH logins with journalctl and auth.log, identify the usernames and IP addresses being targeted, and check whether anyone actually got in.<\/p>\n","protected":false},"author":1,"featured_media":408,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[86,6,171,161,119,5],"tags":[173,172,8,74,174,9,123,175,111],"class_list":["post-407","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-career-development","category-cloud-security","category-linux","category-linux-interview-prep","category-projects","category-server-security","tag-auth-log","tag-journalctl","tag-linux","tag-linux-security","tag-log-analysis","tag-server-security","tag-ssh","tag-system-administration","tag-ubuntu"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>How to Check Failed SSH Logins on Linux<\/title>\n<meta name=\"description\" content=\"Learn how to check failed SSH login attempts on Linux using journalctl and auth.log, count source IPs and usernames, and spot successful logins.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/securebydefault.io\/blog\/check-failed-ssh-logins-linux\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to Check Failed SSH Login Attempts on Linux\" \/>\n<meta property=\"og:description\" content=\"Your SSH logs can tell you who is trying to get in, which usernames they\u2019re targeting, and whether any login actually succeeded. Here\u2019s how to read them.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/securebydefault.io\/blog\/check-failed-ssh-logins-linux\/\" \/>\n<meta property=\"og:site_name\" content=\"SecureByDefault\" \/>\n<meta property=\"article:published_time\" content=\"2026-10-17T19:39:24+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-17T19:42:18+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/securebydefault.io\/blog\/wp-content\/uploads\/2026\/10\/check-failed-ssh-logins-linux-1200x675-1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"675\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Ron Mercier\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Ron Mercier\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/securebydefault.io\\\/blog\\\/check-failed-ssh-logins-linux\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/securebydefault.io\\\/blog\\\/check-failed-ssh-logins-linux\\\/\"},\"author\":{\"name\":\"Ron Mercier\",\"@id\":\"https:\\\/\\\/securebydefault.io\\\/blog\\\/#\\\/schema\\\/person\\\/2ee989263a69e3324bce0cbed28ec0e8\"},\"headline\":\"How to Check Failed SSH Login Attempts on Linux\",\"datePublished\":\"2026-10-17T19:39:24+00:00\",\"dateModified\":\"2026-10-17T19:42:18+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/securebydefault.io\\\/blog\\\/check-failed-ssh-logins-linux\\\/\"},\"wordCount\":1499,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/securebydefault.io\\\/blog\\\/#\\\/schema\\\/person\\\/2ee989263a69e3324bce0cbed28ec0e8\"},\"image\":{\"@id\":\"https:\\\/\\\/securebydefault.io\\\/blog\\\/check-failed-ssh-logins-linux\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/securebydefault.io\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/check-failed-ssh-logins-linux-1200x675-1.jpg\",\"keywords\":[\"auth.log\",\"journalctl\",\"linux\",\"Linux Security\",\"log analysis\",\"server security\",\"SSH\",\"system administration\",\"Ubuntu\"],\"articleSection\":[\"Career Development\",\"Cloud Security\",\"Linux\",\"Linux Interview Prep\",\"Projects\",\"Server Security\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/securebydefault.io\\\/blog\\\/check-failed-ssh-logins-linux\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/securebydefault.io\\\/blog\\\/check-failed-ssh-logins-linux\\\/\",\"url\":\"https:\\\/\\\/securebydefault.io\\\/blog\\\/check-failed-ssh-logins-linux\\\/\",\"name\":\"How to Check Failed SSH Logins on Linux\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/securebydefault.io\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/securebydefault.io\\\/blog\\\/check-failed-ssh-logins-linux\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/securebydefault.io\\\/blog\\\/check-failed-ssh-logins-linux\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/securebydefault.io\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/check-failed-ssh-logins-linux-1200x675-1.jpg\",\"datePublished\":\"2026-10-17T19:39:24+00:00\",\"dateModified\":\"2026-10-17T19:42:18+00:00\",\"description\":\"Learn how to check failed SSH login attempts on Linux using journalctl and auth.log, count source IPs and usernames, and spot successful logins.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/securebydefault.io\\\/blog\\\/check-failed-ssh-logins-linux\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/securebydefault.io\\\/blog\\\/check-failed-ssh-logins-linux\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/securebydefault.io\\\/blog\\\/check-failed-ssh-logins-linux\\\/#primaryimage\",\"url\":\"https:\\\/\\\/securebydefault.io\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/check-failed-ssh-logins-linux-1200x675-1.jpg\",\"contentUrl\":\"https:\\\/\\\/securebydefault.io\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/check-failed-ssh-logins-linux-1200x675-1.jpg\",\"width\":1200,\"height\":675},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/securebydefault.io\\\/blog\\\/check-failed-ssh-logins-linux\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/securebydefault.io\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to Check Failed SSH Login Attempts on Linux\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/securebydefault.io\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/securebydefault.io\\\/blog\\\/\",\"name\":\"SecureByDefault\",\"description\":\"Cloud Security &amp; Cybersecurity for IT Professionals\",\"publisher\":{\"@id\":\"https:\\\/\\\/securebydefault.io\\\/blog\\\/#\\\/schema\\\/person\\\/2ee989263a69e3324bce0cbed28ec0e8\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/securebydefault.io\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/securebydefault.io\\\/blog\\\/#\\\/schema\\\/person\\\/2ee989263a69e3324bce0cbed28ec0e8\",\"name\":\"Ron Mercier\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/securebydefault.io\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/SecureByDefault_Log.png\",\"url\":\"https:\\\/\\\/securebydefault.io\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/SecureByDefault_Log.png\",\"contentUrl\":\"https:\\\/\\\/securebydefault.io\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/SecureByDefault_Log.png\",\"width\":512,\"height\":512,\"caption\":\"Ron Mercier\"},\"logo\":{\"@id\":\"https:\\\/\\\/securebydefault.io\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/SecureByDefault_Log.png\"},\"sameAs\":[\"https:\\\/\\\/securebydefault.io\\\/blog\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/ron-mercier\\\/\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UCDyWOTMI23S8Y3zwPoX3UkQ\"],\"url\":\"https:\\\/\\\/securebydefault.io\\\/blog\\\/author\\\/sbd_admin\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How to Check Failed SSH Logins on Linux","description":"Learn how to check failed SSH login attempts on Linux using journalctl and auth.log, count source IPs and usernames, and spot successful logins.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/securebydefault.io\/blog\/check-failed-ssh-logins-linux\/","og_locale":"en_US","og_type":"article","og_title":"How to Check Failed SSH Login Attempts on Linux","og_description":"Your SSH logs can tell you who is trying to get in, which usernames they\u2019re targeting, and whether any login actually succeeded. Here\u2019s how to read them.","og_url":"https:\/\/securebydefault.io\/blog\/check-failed-ssh-logins-linux\/","og_site_name":"SecureByDefault","article_published_time":"2026-10-17T19:39:24+00:00","article_modified_time":"2026-10-17T19:42:18+00:00","og_image":[{"width":1200,"height":675,"url":"https:\/\/securebydefault.io\/blog\/wp-content\/uploads\/2026\/10\/check-failed-ssh-logins-linux-1200x675-1.jpg","type":"image\/jpeg"}],"author":"Ron Mercier","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Ron Mercier","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/securebydefault.io\/blog\/check-failed-ssh-logins-linux\/#article","isPartOf":{"@id":"https:\/\/securebydefault.io\/blog\/check-failed-ssh-logins-linux\/"},"author":{"name":"Ron Mercier","@id":"https:\/\/securebydefault.io\/blog\/#\/schema\/person\/2ee989263a69e3324bce0cbed28ec0e8"},"headline":"How to Check Failed SSH Login Attempts on Linux","datePublished":"2026-10-17T19:39:24+00:00","dateModified":"2026-10-17T19:42:18+00:00","mainEntityOfPage":{"@id":"https:\/\/securebydefault.io\/blog\/check-failed-ssh-logins-linux\/"},"wordCount":1499,"commentCount":0,"publisher":{"@id":"https:\/\/securebydefault.io\/blog\/#\/schema\/person\/2ee989263a69e3324bce0cbed28ec0e8"},"image":{"@id":"https:\/\/securebydefault.io\/blog\/check-failed-ssh-logins-linux\/#primaryimage"},"thumbnailUrl":"https:\/\/securebydefault.io\/blog\/wp-content\/uploads\/2026\/10\/check-failed-ssh-logins-linux-1200x675-1.jpg","keywords":["auth.log","journalctl","linux","Linux Security","log analysis","server security","SSH","system administration","Ubuntu"],"articleSection":["Career Development","Cloud Security","Linux","Linux Interview Prep","Projects","Server Security"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/securebydefault.io\/blog\/check-failed-ssh-logins-linux\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/securebydefault.io\/blog\/check-failed-ssh-logins-linux\/","url":"https:\/\/securebydefault.io\/blog\/check-failed-ssh-logins-linux\/","name":"How to Check Failed SSH Logins on Linux","isPartOf":{"@id":"https:\/\/securebydefault.io\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/securebydefault.io\/blog\/check-failed-ssh-logins-linux\/#primaryimage"},"image":{"@id":"https:\/\/securebydefault.io\/blog\/check-failed-ssh-logins-linux\/#primaryimage"},"thumbnailUrl":"https:\/\/securebydefault.io\/blog\/wp-content\/uploads\/2026\/10\/check-failed-ssh-logins-linux-1200x675-1.jpg","datePublished":"2026-10-17T19:39:24+00:00","dateModified":"2026-10-17T19:42:18+00:00","description":"Learn how to check failed SSH login attempts on Linux using journalctl and auth.log, count source IPs and usernames, and spot successful logins.","breadcrumb":{"@id":"https:\/\/securebydefault.io\/blog\/check-failed-ssh-logins-linux\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/securebydefault.io\/blog\/check-failed-ssh-logins-linux\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/securebydefault.io\/blog\/check-failed-ssh-logins-linux\/#primaryimage","url":"https:\/\/securebydefault.io\/blog\/wp-content\/uploads\/2026\/10\/check-failed-ssh-logins-linux-1200x675-1.jpg","contentUrl":"https:\/\/securebydefault.io\/blog\/wp-content\/uploads\/2026\/10\/check-failed-ssh-logins-linux-1200x675-1.jpg","width":1200,"height":675},{"@type":"BreadcrumbList","@id":"https:\/\/securebydefault.io\/blog\/check-failed-ssh-logins-linux\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/securebydefault.io\/blog\/"},{"@type":"ListItem","position":2,"name":"How to Check Failed SSH Login Attempts on Linux"}]},{"@type":"WebSite","@id":"https:\/\/securebydefault.io\/blog\/#website","url":"https:\/\/securebydefault.io\/blog\/","name":"SecureByDefault","description":"Cloud Security &amp; Cybersecurity for IT Professionals","publisher":{"@id":"https:\/\/securebydefault.io\/blog\/#\/schema\/person\/2ee989263a69e3324bce0cbed28ec0e8"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/securebydefault.io\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/securebydefault.io\/blog\/#\/schema\/person\/2ee989263a69e3324bce0cbed28ec0e8","name":"Ron Mercier","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/securebydefault.io\/blog\/wp-content\/uploads\/2026\/05\/SecureByDefault_Log.png","url":"https:\/\/securebydefault.io\/blog\/wp-content\/uploads\/2026\/05\/SecureByDefault_Log.png","contentUrl":"https:\/\/securebydefault.io\/blog\/wp-content\/uploads\/2026\/05\/SecureByDefault_Log.png","width":512,"height":512,"caption":"Ron Mercier"},"logo":{"@id":"https:\/\/securebydefault.io\/blog\/wp-content\/uploads\/2026\/05\/SecureByDefault_Log.png"},"sameAs":["https:\/\/securebydefault.io\/blog","https:\/\/www.linkedin.com\/in\/ron-mercier\/","https:\/\/www.youtube.com\/channel\/UCDyWOTMI23S8Y3zwPoX3UkQ"],"url":"https:\/\/securebydefault.io\/blog\/author\/sbd_admin\/"}]}},"_links":{"self":[{"href":"https:\/\/securebydefault.io\/blog\/wp-json\/wp\/v2\/posts\/407","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/securebydefault.io\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/securebydefault.io\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/securebydefault.io\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/securebydefault.io\/blog\/wp-json\/wp\/v2\/comments?post=407"}],"version-history":[{"count":10,"href":"https:\/\/securebydefault.io\/blog\/wp-json\/wp\/v2\/posts\/407\/revisions"}],"predecessor-version":[{"id":418,"href":"https:\/\/securebydefault.io\/blog\/wp-json\/wp\/v2\/posts\/407\/revisions\/418"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/securebydefault.io\/blog\/wp-json\/wp\/v2\/media\/408"}],"wp:attachment":[{"href":"https:\/\/securebydefault.io\/blog\/wp-json\/wp\/v2\/media?parent=407"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/securebydefault.io\/blog\/wp-json\/wp\/v2\/categories?post=407"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/securebydefault.io\/blog\/wp-json\/wp\/v2\/tags?post=407"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}