I think I'd rather just expose the options.

```diff
diff --git a/lib/backup/storage/scp.rb b/lib/backup/storage/scp.rb
index 8e3ed97..d6034e1 100644
--- a/lib/backup/storage/scp.rb
+++ b/lib/backup/storage/scp.rb
@@ -8,7 +8,7 @@ module Backup
 
       ##
       # Server credentials
-      attr_accessor :username, :password, :key
+      attr_accessor :username, :password, :ssh_options
 
       ##
       # Server IP Address and SCP port
@@ -19,15 +19,16 @@ module Backup
 
         @port ||= 22
         @path ||= 'backups'
+        @ssh_options ||= {}
+        @ssh_options[:password] ||= password
+        @ssh_options[:port]     ||= port
         path.sub!(/^~\//, '')
       end
 
       private
 
       def connection
-        Net::SSH.start(
-          ip, username, :password => password, :port => port, :keys => [key]
-        ) {|ssh| yield ssh }
+        Net::SSH.start(ip, username, ssh_options) {|ssh| yield ssh }
       end
 
       def transfer!
```