{ "title": "A list of SSH FS configurations", "$schema": "http://json-schema.org/draft-04/schema#", "type": "object", "definitions": { "fields": { "name": { "type": "string", "description": "The unique name for this configuration" }, "label": { "type": "string", "description": "A display name used in some user interface places" }, "root": { "type": "string", "description": "The remote folder to act as root folder", "default": "/" }, "host": { "type": "string", "description": "Hostname or IP address of the server" }, "port": { "type": "number", "description": "Port number of the server", "default": 22 }, "username": { "type": "string", "description": "Username for authentication" }, "password": { "type": [ "string", "boolean" ], "description": "Password for password-based user authentication" }, "privateKey": { "type": "string", "description": "String that contains a private key for either key-based or hostbased user authentication (OpenSSH format)" }, "privateKeyPath": { "type": "string", "description": "String that contains the path to a private key for either key-based or hostbased user authentication (OpenSSH format)" }, "passphrase": { "type": [ "string", "boolean" ], "description": "For an encrypted private key, this is the passphrase used to decrypt it" }, "agent": { "type": "string", "description": "Path to ssh-agent's UNIX socket for ssh-agent-based user authentication (or 'pageant' when using Pagent on Windows)" }, "putty": { "type": [ "string", "boolean" ], "description": "(Windows only) Use the settings from the given PuTTY session (set this to true to find one using the other settings)" }, "hop": { "type": "string", "description": "Use another SSH configuration as intermediate proxy (connection hopping)" }, "proxy": { "type": "object", "description": "Define a SOCKS 4 or SOCKS 5 proxy to connect through", "required": [ "host", "port", "type" ], "properties": { "host": { "type": "string", "description": "The hostname of the proxy" }, "port": { "type": "number", "description": "The port of the proxy" }, "type": { "description": "The type of the proxy (socks4/socks5)", "enum": [ "socks4", "socks5" ] } } } }, "basic": { "type": "object", "properties": { "label": { "$ref": "#/definitions/fields/label" }, "root": { "$ref": "#/definitions/fields/root" }, "hop": { "$ref": "#/definitions/fields/hop" }, "proxy": { "$ref": "#/definitions/fields/proxy" } } }, "authentication": { "anyOf": [ { "$ref": "#/definitions/authentication-types/password" }, { "$ref": "#/definitions/authentication-types/agent" }, { "oneOf": [ { "$ref": "#/definitions/authentication-types/key" }, { "$ref": "#/definitions/authentication-types/key-path" } ] } ] }, "authentication-types": { "password": { "type": "object", "required": [ "username", "password" ], "properties": { "username": { "$ref": "#/definitions/fields/username" }, "password": { "$ref": "#/definitions/fields/password" } } }, "key": { "type": "object", "required": [ "username", "privateKey" ], "properties": { "username": { "$ref": "#/definitions/fields/username" }, "privateKey": { "$ref": "#/definitions/fields/privateKey" }, "passphrase": { "$ref": "#/definitions/fields/passphrase" } } }, "key-path": { "type": "object", "required": [ "username", "privateKeyPath" ], "properties": { "username": { "$ref": "#/definitions/fields/username" }, "privateKeyPath": { "$ref": "#/definitions/fields/privateKeyPath" }, "passphrase": { "$ref": "#/definitions/fields/passphrase" } } }, "agent": { "type": "object", "required": [ "username", "agent" ], "properties": { "username": { "$ref": "#/definitions/fields/username" }, "agent": { "$ref": "#/definitions/fields/agent" } } } }, "server-identification": { "hostname": { "required": [ "host" ], "properties": { "host": { "$ref": "#/definitions/fields/host" }, "port": { "$ref": "#/definitions/fields/port" } } }, "putty": { "required": [ "putty" ], "properties": { "putty": { "$ref": "#/definitions/fields/putty" } } } } }, "allOf": [ { "$ref": "#/definitions/basic" }, { "oneOf": [ { "allOf": [ { "$ref": "#/definitions/server-identification/hostname" }, { "$ref": "#/definitions/authentication" } ] }, { "allOf": [ { "$ref": "#/definitions/server-identification/putty" }, { "anyOf": [ { "$ref": "#/definitions/authentication" }, {} ] } ] } ] } ] }