diff --git a/readpass.c b/readpass.c
index f160f866..c2b90c8e 100644
--- a/readpass.c
+++ b/readpass.c
@@ -140,10 +140,10 @@ read_passphrase(const char *prompt, int flags)
 		}
 	}
 
-	if ((flags & RP_USE_ASKPASS) && getenv("DISPLAY") == NULL)
+	if ((flags & RP_USE_ASKPASS) && (getenv("DISPLAY") == NULL || getenv("WAYLAND_DISPLAY") == NULL))
 		return (flags & RP_ALLOW_EOF) ? NULL : xstrdup("");
 
-	if (use_askpass && getenv("DISPLAY")) {
+	if (use_askpass && (getenv("DISPLAY") || getenv("WAYLAND_DISPLAY"))) {
 		if (getenv(SSH_ASKPASS_ENV))
 			askpass = getenv(SSH_ASKPASS_ENV);
 		else