diff --git a/runopts.h b/runopts.h
index f7c869da8be3cd9ee2adb741cceb9632b10ea8b7..41c60fba65e3ba956f98819682003a651a7a4892 100644
--- a/runopts.h
+++ b/runopts.h
@@ -114,6 +114,8 @@ typedef struct svr_runopts {
 	buffer * banner;
 	char * pidfile;
 
+	char * forced_command;
+
 } svr_runopts;
 
 extern svr_runopts svr_opts;
diff --git a/svr-chansession.c b/svr-chansession.c
index bfaf7f695f1e8e77d9228cb7da4ae5a3ba8a1a72..8c6f3a2dcd081b3fd9ad29e5022a05b9222f94b1 100644
--- a/svr-chansession.c
+++ b/svr-chansession.c
@@ -671,8 +671,16 @@ static int sessioncommand(struct Channel *channel, struct ChanSess *chansess,
 		}
 	}
 	
-	/* take public key option 'command' into account */
-	svr_pubkey_set_forced_command(chansess);
+
+	/* take global command into account */
+	if (svr_opts.forced_command) {
+		chansess->original_command = chansess->cmd ? : m_strdup("");
+		chansess->cmd = m_strdup(svr_opts.forced_command);
+	} else {
+		/* take public key option 'command' into account */
+		svr_pubkey_set_forced_command(chansess);
+	}
+
 
 #ifdef LOG_COMMANDS
 	if (chansess->cmd) {
diff --git a/svr-runopts.c b/svr-runopts.c
index 8f60059fee2252dc3ccc3ee6a50d63de63989556..8d1fa6b2196400ab06cddd5f2d8b9ba900dd492e 100644
--- a/svr-runopts.c
+++ b/svr-runopts.c
@@ -79,6 +79,7 @@ static void printhelp(const char * progname) {
 #ifdef ENABLE_SVR_REMOTETCPFWD
 					"-k		Disable remote port forwarding\n"
 					"-a		Allow connections to forwarded ports from any host\n"
+					"-c command	Force executed command\n"
 #endif
 					"-p [address:]port\n"
 					"		Listen on specified tcp port (and optionally address),\n"
@@ -125,6 +126,7 @@ void svr_getopts(int argc, char ** argv) {
 	/* see printhelp() for options */
 	svr_opts.bannerfile = NULL;
 	svr_opts.banner = NULL;
+	svr_opts.forced_command = NULL;
 	svr_opts.forkbg = 1;
 	svr_opts.norootlogin = 0;
 	svr_opts.noauthpass = 0;
@@ -177,6 +179,9 @@ void svr_getopts(int argc, char ** argv) {
 				case 'b':
 					next = &svr_opts.bannerfile;
 					break;
+				case 'c':
+					next = &svr_opts.forced_command;
+					break;
 				case 'd':
 				case 'r':
 					next = &keyfile;