### Godot version

v4.0.beta.custom_build [d1e5903c6]

### System information

Arch Linux kernel 6.1.7-arch1-1 x86_64 OpenSSH 9.1p1-3

### Issue description

When using SSH remote deploy, if the extra args field is empty (the default) the ssh command is not executed with success because a single space is inserted in place of the extra args.

```
Creating temporary directory...
Executing: ssh -p 22  davi@192.168.1.50 mktemp -d
Exit code: 255, Output: ssh: Could not resolve hostname : Name or service not known

ssh: Could not resolve hostname : Name or service not known
```

If any valid argument is passed, the command is executed successfully, in the example below I duplicated the `-p 22`, which is ignored, to show that it is not a problem of the hostname passed.

```
Executing: ssh -p 22 -p 22 davi@192.168.1.50 mktemp -d
Exit code: 0, Output: /tmp/tmp.DwFObXBL2s
```

This is infuriating for when you have non-interactive authentication configured in ssh-agent and just the hostname is needed for the connection.
This occurs for both SSH and SCP.

### Steps to reproduce

1. Enable a project to deploy with ssh
2. Fill only the hostname
3. Try to deploy
4. See the error on the console

### Minimal reproduction project

N/A
cleanup();
	if (p_device) { 
		return OK;
	}
	EditorProgress ep("run", TTR("Running..."), 5);
	const String dest = EditorPaths::get_singleton()->get_cache_dir().path_join("windows");
	Ref<DirAccess> da = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);
	if (!da->dir_exists(dest)) {
		Error err = da->make_dir_recursive(dest);
		if (err != OK) {
			EditorNode::get_singleton()->show_warning(TTR("Could not create temp directory:") + "\n" + dest);
			return err;
		}
	}
	String host = p_preset->get("ssh_remote_deploy/host").operator String();
	String port = p_preset->get("ssh_remote_deploy/port").operator String();
	if (port.is_empty()) {
		port = "22";
	}
	Vector<String> extra_args_ssh = p_preset->get("ssh_remote_deploy/extra_args_ssh").operator String().split(" ");
	Vector<String> extra_args_scp = p_preset->get("ssh_remote_deploy/extra_args_scp").operator String().split(" ");
	const String basepath = dest.path_join("tmp_windows_export");
#define CLEANUP_AND_RETURN(m_err)                       \
	{                                                   \
		if (da->file_exists(basepath + ".zip")) {       \
			da->remove(basepath + ".zip");              \
		}                                               \