--- a/readpass.c +++ a/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