Index: wp-admin/includes/class-wp-filesystem-direct.php
===================================================================
--- wp-admin/includes/class-wp-filesystem-direct.php	(revision 15829)
+++ wp-admin/includes/class-wp-filesystem-direct.php	(working copy)
@@ -221,6 +221,8 @@
 			return false;
 		$file = str_replace('\\', '/', $file); //for win32, occasional problems deleteing files otherwise
 
+		if ( $this->is_link(untrailingslashit($file)) )
+			return @unlink(untrailingslashit($file));
 		if ( $this->is_file($file) )
 			return @unlink($file);
 		if ( ! $recursive && $this->is_dir($file) )
@@ -253,6 +255,10 @@
 		return @is_dir($path);
 	}
 
+	function is_link($path) {
+		return @is_link($path);
+	}
+
 	function is_readable($file) {
 		return @is_readable($file);
 	}
Index: wp-admin/includes/class-wp-filesystem-ssh2.php
===================================================================
--- wp-admin/includes/class-wp-filesystem-ssh2.php	(revision 15829)
+++ wp-admin/includes/class-wp-filesystem-ssh2.php	(working copy)
@@ -252,6 +252,8 @@
 	}
 
 	function delete($file, $recursive = false) {
+		if ( $this->is_link(untrailingslashit($file)) )
+			return ssh2_sftp_unlink($this->sftp_link, untrailingslashit($file));
 		if ( $this->is_file($file) )
 			return ssh2_sftp_unlink($this->sftp_link, $file);
 		if ( ! $recursive )
@@ -280,6 +282,11 @@
 		return is_dir('ssh2.sftp://' . $this->sftp_link . '/' . $path);
 	}
 
+	function is_link($path) {
+		$path = trim($path, '/');
+		return is_link('ssh2.sftp://' . $this->sftp_link . '/' . $path);
+	}
+
 	function is_readable($file) {
 		$file = ltrim($file, '/');
 		return is_readable('ssh2.sftp://' . $this->sftp_link . '/' . $file);
