<!--  DO NOT EDIT THIS FILE DIRECTLY

 This file is generated using clidoc by parsing the help output of this tool.
 Please edit the help output or clidoc's processing of that output to make changes
 to this file.

 -->
 
# fssh

```none {: style="white-space: break-spaces;" .devsite-disable-click-to-copy}

fssh [-device-name device-name -device-ip device-ip -private-key private-key -sshconfig sshconfig -data-path data-path -verbose -level log-level] [ssh_command]

```

__Subcommands:__

```none {: style="white-space: break-spaces;" .devsite-disable-click-to-copy}

sync-keys        Sync SSH key files associated with Fuchsia between a local and remote workstation.
tunnel           Creates a tunnel between a local Fuchsia device and a remote host

  -data-path string
    	Specifies the data path for SDK tools. Defaults to $HOME/.fuchsia
  -device-ip string
    	Serves packages to a device with the given device ip address. Cannot be used with --device-name."
    	If neither --device-name nor --device-ip are specified, the device-name configured using ffx is used.
  -device-name string
    	Serves packages to a device with the given device hostname. Cannot be used with --device-ip."
    	If neither --device-name nor --device-ip are specified, the device-name configured using ffx is used.
  -level value
    	Output verbosity, can be fatal, error, warning, info, debug or trace. (default info)
  -private-key string
    	Uses additional private key when using ssh to access the device.
  -sshconfig string
    	Use the specified sshconfig file instead of fssh's version.
  -verbose
    	Runs ssh in verbose mode.
```

## sync-keys

```none {: style="white-space: break-spaces;" .devsite-disable-click-to-copy}

fssh sync-keys [-remote-host remote-host]
Sync SSH key files associated with Fuchsia between a local and remote workstation. If no SSH key files associated with Fuchsia are found Fuchsia key files are generated locally and copied to the remote.
Inspects the SSH private/public key pair and authorized keys file in $HOME/.ssh/fuchsia_*. These files are used by all Fuchsia development tools to access target devices.
  -level value
    	Output verbosity, can be fatal, error, warning, info, debug or trace. (default info)
  -remote-host string
    	The remote host where development is taking place.
```

## tunnel

```none {: style="white-space: break-spaces;" .devsite-disable-click-to-copy}

fssh tunnel [-remote-host remote-host -device-ip device-ip -device-name -device-name -sshconfig path-to-ssh-config -tunnel-ports=NNNN,NNNN -s]:
Creates tunnel between the specified remote host and local Fuchsia device. Either the device-ip or device-name flag must be set. If both are set the device-ip flag will take precedence.
  -data-path string
    	Specifies the data path for SDK tools. Defaults to $HOME/.fuchsia
  -device-ip string
    	The IPv6 address of the target device to use to create the tunnel. This flag will override the device-name flag if provided.
  -device-name string
    	The name of the target device to use to create the tunnel. If provided the value provided for the flag device-ip will take presedence over this flag.
  -level value
    	Output verbosity, can be fatal, error, warning, info, debug or trace. (default info)
  -print-ssh-config
    	Print the SSH config instead of setting up the tunnel.
  -remote-host string
    	The remote host where development is taking place. If this flag is missing the most recent value from a previous call to this command will be used if applicable.
  -repo-port int
    	Repository port to forward when setting up the tunnel (default 8083)
  -sshconfig string
    	Optional. Path to a SSH configuration file to use in leiu of the default SSH config. Run 'fssh tunnel -print-ssh-config' to view the default SSH configuration.
  -tunnel-ports value
    	Optional. Comma separated list of additional ports to forward when setting up the tunnel. It is an error to specify a protected port (any port less than 1024).
    	If using the default SSH config, the following ports which are already in use will be ignored: 2345, 8007, 8008, 8022, 8443, 8888, 9080.
  -verbose
    	Add debugging to the SSH config.
```

