Ssh
如何測試 ssh 伺服器是否允許密碼?
我想測試 ssh 伺服器是否允許密碼並立即關閉連接而不實際嘗試登錄。
像這樣的東西:
allows_password=$(ssh --some-option example.com) if [ -z "$allows_password" ]; then echo "Insecure Server Options" else echo "Insecure Password Access is not Allowed, Great!" fi
我以前實際上做過一次,但我找不到舊的腳本或文件。不開心的一天。:-/
我找到了我的舊腳本:
ssh -v -n \ -o Batchmode=yes \ -o StrictHostKeyChecking=no \ -o UserKnownHostsFile=/dev/null \ DOES_NOT_EXIST@localhost 2>&1 | grep password
- 該
-o Batchmode=yes
選項會導致非互動模式,其中回退到密碼會導致失敗。-v
導致顯示身份驗證方法(除其他外)。- 導致 ssh 無法打開 shell(通常與隧道一起使用
-n
),在這種情況下會導致它立即退出(以防您連接到honeypot或像 serveo.net 這樣的允許客戶端無需身份驗證的服務)-o StrictHostKeyChecking=no
並-o UserKnownHostsFile=/dev/null
自動接受主機而不將其寫入 known-hosts 文件。2>&1
將調試消息 (stderr) 轉發到日誌系統 (stdout) 以便grep
發揮它的魔力據我所知,如果為某些使用者啟用了密碼身份驗證,它將顯示為所有使用者都啟用(但在提示後失敗)。我懷疑這是因為您無法確定係統上存在使用者。
這樣我就不會再次失去它:https ://coolaj86.com/articles/testing-if-ssh-allows-passwords/