 
 // MARK: - UserServer
 
+public enum SSHAuthMethod {
+    case key(String)
+    // case password(String) TODO
+}
+
 extension Config {
-    public static var SSHKey: String = ""
+    public static var SSHAuthMethod: SSHAuthMethod? = nil
 }
 
 public class UserServer: ServerCommandExecutor {

    
    public let ip: String
    public let user: String
    
    public init(ip: String, user: String) {
        self.ip = ip
        self.user = user
    }
    
    public func createArguments(for call: String) throws -> [String] {
        guard !Config.SSHKey.isEmpty else {
            throw TaskError.error("You must specify `Config.SSHKey` in your configuration file")
        }
        
        return ["/usr/bin/ssh", "-i", Config.SSHKey, "-l", user, ip, call]
    }
    
}

        return Server(commandExecutor: DummyServer(), roles: [.app, .db, .web])
    }
    
    public convenience init(ip: String, user: String, roles: [ServerRole], authMethod: SSHAuthMethod?) {
        self.init(commandExecutor: UserServer(ip: ip, user: user, authMethod: authMethod), roles: roles)
    }
    
    public convenience init(SSHHost: String, roles: [ServerRole]) {
