diff --git a/src/sbbs3/main.cpp b/src/sbbs3/main.cpp
index ae95469b55a176930600f2de861ede6c9d7060a0..44ebe4278713ec11e1e510927e0eed31d7f0b439 100644
--- a/src/sbbs3/main.cpp
+++ b/src/sbbs3/main.cpp
@@ -2965,6 +2965,7 @@ sbbs_t::sbbs_t(ushort node_num, SOCKADDR_IN addr, const char* name, SOCKET sd,
 
 #ifdef USE_CRYPTLIB
 	ssh_mode=false;
+	ssh_mutex_created=false;
     passthru_input_thread_running = false;
     passthru_output_thread_running = false;
 #endif
@@ -3353,7 +3354,10 @@ bool sbbs_t::init()
 			} 
 	}
 
+#ifdef USE_CRYPTLIB
 	pthread_mutex_init(&ssh_mutex,NULL);
+	ssh_mutex_created = true;
+#endif
 	pthread_mutex_init(&input_thread_mutex,NULL);
 
 	reset_logon_vars();
@@ -3481,8 +3485,10 @@ sbbs_t::~sbbs_t()
 	FREE_AND_NULL(batdn_cdt);
 	FREE_AND_NULL(batdn_alt);
 
-	while(pthread_mutex_destroy(&ssh_mutex)==EBUSY)
+#ifdef USE_CRYPTLIB
+	while(ssh_mutex_created && pthread_mutex_destroy(&ssh_mutex)==EBUSY)
 		mswait(1);
+#endif
 	while(pthread_mutex_destroy(&input_thread_mutex)==EBUSY)
 		mswait(1);
 
diff --git a/src/sbbs3/sbbs.h b/src/sbbs3/sbbs.h
index 67a120f0f5f78d8ac2f00d00bdedc732ab2ce886..acd1ff4e57ae19db1b66b7d8877d8d790d59fe98 100644
--- a/src/sbbs3/sbbs.h
+++ b/src/sbbs3/sbbs.h
@@ -336,6 +336,7 @@ public:
 	pthread_mutex_t	input_thread_mutex;
 	bool	input_thread_mutex_locked;	// by someone other than the input_thread
 	pthread_mutex_t	ssh_mutex;
+	bool	ssh_mutex_created;
 
 	int 	outcom(uchar ch); 	   // send character
 	int 	incom(unsigned long timeout=0);		   // receive character