diff --git a/lib/deployer.js b/lib/deployer.js
index a4f58f6..b970140 100644
--- a/lib/deployer.js
+++ b/lib/deployer.js
@@ -19,6 +19,7 @@ module.exports = function(args) {
     help += '    delete: [true|false] # Default is true\n';
     help += '    args: <rsync args>\n';
     help += '    rsh: <remote shell>\n';
+    help += '    key: <key>\n';
     help += '    verbose: [true|false] # Default is true\n';
     help += '    ignore_errors: [true|false] # Default is false\n\n';
     help += 'For more help, you can check the docs: ' + color.underline('https://hexo.io/docs/deployment.html');
@@ -40,7 +41,13 @@ module.exports = function(args) {
   if (args.port && args.port > 0 && args.port < 65536) {
     params.splice(params.length - 2, 0, '-e');
     if (args.rsh) {
-      params.splice(params.length - 2, 0, `'${args.rsh}' -p ${args.port}`);
+      if (args.key) {
+        params.splice(params.length - 2, 0, `'${args.rsh}' -i ${args.key} -p ${args.port}`);
+      } else {
+        params.splice(params.length - 2, 0, `'${args.rsh}' -p ${args.port}`);
+      }
+    } else if (args.key) {
+      params.splice(params.length - 2, 0, 'ssh -i ' + args.key + ' -p ' + args.port);
     } else {
       params.splice(params.length - 2, 0, 'ssh -p ' + args.port);
     }