diff --git a/src/options.c b/src/options.c
index f7f2455..1eb8743 100644
--- a/src/options.c
+++ b/src/options.c
@@ -526,9 +526,17 @@ int ssh_options_set(ssh_session session, enum ssh_options_e type,
             v = value;
             SAFE_FREE(session->opts.sshdir);
             if (v == NULL) {
-                session->opts.sshdir = ssh_path_expand_tilde("~/.ssh");
-                if (session->opts.sshdir == NULL) {
-                    return -1;
+                char *home = getenv("HOME");
+                if (home) {
+                    session->opts.sshdir = (char *)malloc(strlen(home)+6);
+                    strcpy(session->opts.sshdir, home);
+                    strcat(session->opts.sshdir, "/.ssh");
+                }
+                else {
+                    session->opts.sshdir = ssh_path_expand_tilde("~/.ssh");
+                    if (session->opts.sshdir == NULL) {
+                        return -1;
+                    }
                 }
             } else if (v[0] == '\0') {
                 ssh_set_error_oom(session);
