Ssh

如何測試 ssh 伺服器是否允許密碼?

  • November 1, 2018

我想測試 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/

引用自:https://serverfault.com/questions/938149