From 2f9be84f3d20ee60198b63fbe6ed572feb4a4d51 Mon Sep 17 00:00:00 2001 From: Kim Pevey Date: Fri, 9 Aug 2024 09:36:48 -0500 Subject: [PATCH 1/8] add ssh doc --- docs/docs/how-tos/connect-via-ssh.mdx | 64 +++++++++++++++++++++++++++ docs/sidebars.js | 1 + 2 files changed, 65 insertions(+) create mode 100644 docs/docs/how-tos/connect-via-ssh.mdx diff --git a/docs/docs/how-tos/connect-via-ssh.mdx b/docs/docs/how-tos/connect-via-ssh.mdx new file mode 100644 index 00000000..c4c1462c --- /dev/null +++ b/docs/docs/how-tos/connect-via-ssh.mdx @@ -0,0 +1,64 @@ +--- +id: connect-via-ssh +title: Connect to Nebari via SSH or SFTP +description: Set up a remote SSH connection using jupyter-ssh +--- + +# Connect to Nebari via SSH or SFTP + +Secure Shell Protocol (SSH) is a common protocol for communicating securely over a network connection. Secure File Transfer Protocol (SFTP) is based on SSH and is used to transfer files to and from a remote machine. In this guide, you will learn how to connect to your Nebari deployment via SSH, and how to transfer files using SFTP from your local machine. + +Nebari includes a package called [`jupyterhub-ssh`](https://github.com/yuvipanda/jupyterhub-ssh) in all deployments to allow remote connection to Nebari deployments. On Nebari, SSH connections are set up on port 8022 and SFTP connections on port 8023. + +## Prepare for the connection on the Nebari deployment + +Nebari, at its core, is running on a JupyterHub server. You will create a JupyterHub _token_ in order to access your server remotely. To do this, log into your Nebari deployment and navigate to the JupyterHub token page, {your-nebari-domain.org/hub/token}. + +This page is also accessible via the Nebari Home Page: + +* If your deployment has `jhub-apps` enabled, you can navigate to this page by selecting the `Token` option under your username in the upper righthand corner. +* If your deployment does not have `jhub-apps` enabled, you can click on the `Token` link on the top navigation bar. + +You may add a note and expiration date to the token. You can leave the scopes field blank to give the token all the permissions that your user typically has on JupyterHub (which is the service on which Nebari is running). + +## Connect to Nebari via SSH + +Before you being, you'll need to have SSH installed on your local machine. From a terminal, use `ssh` to begin the connection. + +`ssh {your-nebari-domain.com} -l {your-username} -p 8022` + +:::note +The syntax for `{your-nebari-domain.com}` is important - do not include `https://` or a trailing `/`. + +If you have the incorrect syntax, it will result in the error: `Could not resolve hostname {your-nebari-domain.com}: nodename nor servname provided, or not known` +::: + +You will then be prompted for your password. Enter the token as the password and press `Enter`. + +If you don't already have a JupyterLab server running on your Nebari instance, it may take several minutes for the server to start up. The `ssh` connection has it's own timeout period which is likely shorter than the time it takes to spinup a new server. Therefore, you may see the following error as the `ssh` connection times out: + +`Starting your server............................................failed to start server on time!` + +The good news is that Nebari is still working on spinning up your server. Retry the `ssh` connection until the connection is established once the server is up and accessible. + +Once the connection is complete, you will have terminal access to your JupyterLab instance on Nebari. + +## Use SFTP to transfer files to/from Nebari + +SFTP, which stands for _Secure File Transfer Protocol_, is a protocol built into SSH that can implement file transfer commands over a secure connection. The SFTP port on Nebari is 8023. + +Utilizing SFTP will depend on how your local machine is configured and the utility you're using for SFTP. In some cases, your SSH configuration will allow SFTP to work "out of the box". Other times, special SFTP setup is required in your SSH configuration to allow for these connections. + +## Dangerous, but useful information + +:::warning +The following suggestion is not recommended unless absolutely necessary since it will artificially keep a JupyterLab instance running which may have financial repercussions. +::: + +If you have a long-running task and you need to avoid the idle-culler on JupyterLab, you can use [tmux](https://github.com/tmux/tmux/wiki) to keep your server alive while your task is completing. + +Short list of useful commands: +- Create a new session `tmux new -s mysession` +- Detach from session ctrl + b d +- List available session `tmux ls` +- Attach to a session `tmux attach -t mysession` diff --git a/docs/sidebars.js b/docs/sidebars.js index 2aa6e39c..3fe9e0f2 100644 --- a/docs/sidebars.js +++ b/docs/sidebars.js @@ -81,6 +81,7 @@ module.exports = { "how-tos/monitoring", "how-tos/use-gpus", "how-tos/fine-grained-permissions", + "how-tos/connect-via-ssh", ], }, { From 83a9260fc2db385c3638e8c806975c6262fd4dfd Mon Sep 17 00:00:00 2001 From: Kim Pevey Date: Tue, 20 Aug 2024 10:57:16 -0500 Subject: [PATCH 2/8] switch to angle brackets --- docs/docs/how-tos/connect-via-ssh.mdx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/docs/how-tos/connect-via-ssh.mdx b/docs/docs/how-tos/connect-via-ssh.mdx index c4c1462c..7d6e6cb6 100644 --- a/docs/docs/how-tos/connect-via-ssh.mdx +++ b/docs/docs/how-tos/connect-via-ssh.mdx @@ -12,7 +12,7 @@ Nebari includes a package called [`jupyterhub-ssh`](https://github.com/yuvipanda ## Prepare for the connection on the Nebari deployment -Nebari, at its core, is running on a JupyterHub server. You will create a JupyterHub _token_ in order to access your server remotely. To do this, log into your Nebari deployment and navigate to the JupyterHub token page, {your-nebari-domain.org/hub/token}. +Nebari, at its core, is running on a JupyterHub server. You will create a JupyterHub _token_ in order to access your server remotely. To do this, log into your Nebari deployment and navigate to the JupyterHub token page, \. This page is also accessible via the Nebari Home Page: @@ -25,12 +25,12 @@ You may add a note and expiration date to the token. You can leave the scopes fi Before you being, you'll need to have SSH installed on your local machine. From a terminal, use `ssh` to begin the connection. -`ssh {your-nebari-domain.com} -l {your-username} -p 8022` +`ssh \ -l \ -p 8022` :::note -The syntax for `{your-nebari-domain.com}` is important - do not include `https://` or a trailing `/`. +The syntax for `\` is important - do not include `https://` or a trailing `/`. -If you have the incorrect syntax, it will result in the error: `Could not resolve hostname {your-nebari-domain.com}: nodename nor servname provided, or not known` +If you have the incorrect syntax, it will result in the error: `Could not resolve hostname \: nodename nor servname provided, or not known` ::: You will then be prompted for your password. Enter the token as the password and press `Enter`. From 54a6a76e15ed23101c6c18a82121a9ab0558bdd2 Mon Sep 17 00:00:00 2001 From: Kim Pevey Date: Wed, 21 Aug 2024 10:19:24 -0500 Subject: [PATCH 3/8] Apply suggestions from code review Co-authored-by: Vinicius D. Cerutti <51954708+viniciusdc@users.noreply.github.com> --- docs/docs/how-tos/connect-via-ssh.mdx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/docs/how-tos/connect-via-ssh.mdx b/docs/docs/how-tos/connect-via-ssh.mdx index 7d6e6cb6..cdbdd074 100644 --- a/docs/docs/how-tos/connect-via-ssh.mdx +++ b/docs/docs/how-tos/connect-via-ssh.mdx @@ -6,13 +6,13 @@ description: Set up a remote SSH connection using jupyter-ssh # Connect to Nebari via SSH or SFTP -Secure Shell Protocol (SSH) is a common protocol for communicating securely over a network connection. Secure File Transfer Protocol (SFTP) is based on SSH and is used to transfer files to and from a remote machine. In this guide, you will learn how to connect to your Nebari deployment via SSH, and how to transfer files using SFTP from your local machine. +Secure Shell Protocol (SSH) is a standard protocol for communicating securely over a network connection. Secure File Transfer Protocol (SFTP) is based on SSH and transfers files to and from a remote machine. In this guide, you will learn how to connect and launch your JupyterLab user instance via SSH and transfer files using SFTP from your local machine. -Nebari includes a package called [`jupyterhub-ssh`](https://github.com/yuvipanda/jupyterhub-ssh) in all deployments to allow remote connection to Nebari deployments. On Nebari, SSH connections are set up on port 8022 and SFTP connections on port 8023. +Nebari includes a package called [`jupyterhub-ssh`](https://github.com/yuvipanda/jupyterhub-ssh) in all deployments to allow remote connection to their user instances. On Nebari, SSH connections are set up on port 8022 and SFTP connections on port 8023. ## Prepare for the connection on the Nebari deployment -Nebari, at its core, is running on a JupyterHub server. You will create a JupyterHub _token_ in order to access your server remotely. To do this, log into your Nebari deployment and navigate to the JupyterHub token page, \. +You will create a JupyterHub _token_ in order to access your server remotely. To do this, log into your Nebari deployment and navigate to the JupyterHub token page, \. This page is also accessible via the Nebari Home Page: From 82abfb0747bbef5afbc5d8e87bcd42c956c34507 Mon Sep 17 00:00:00 2001 From: Kim Pevey Date: Wed, 21 Aug 2024 12:23:51 -0500 Subject: [PATCH 4/8] adjusted wording around nebari vs jhub servers, removed the escape slashes from the angle brackets for now --- docs/docs/how-tos/connect-via-ssh.mdx | 46 ++++++++++++++++----------- 1 file changed, 28 insertions(+), 18 deletions(-) diff --git a/docs/docs/how-tos/connect-via-ssh.mdx b/docs/docs/how-tos/connect-via-ssh.mdx index cdbdd074..20ce0764 100644 --- a/docs/docs/how-tos/connect-via-ssh.mdx +++ b/docs/docs/how-tos/connect-via-ssh.mdx @@ -1,63 +1,73 @@ --- id: connect-via-ssh -title: Connect to Nebari via SSH or SFTP +title: Connect to Nebari's JupyterLab via SSH or SFTP description: Set up a remote SSH connection using jupyter-ssh --- -# Connect to Nebari via SSH or SFTP +# Connect to Nebari's JupyterLab via SSH or SFTP -Secure Shell Protocol (SSH) is a standard protocol for communicating securely over a network connection. Secure File Transfer Protocol (SFTP) is based on SSH and transfers files to and from a remote machine. In this guide, you will learn how to connect and launch your JupyterLab user instance via SSH and transfer files using SFTP from your local machine. +Secure Shell Protocol (SSH) is a standard protocol for communicating securely over a network connection. Secure File Transfer Protocol (SFTP) is based on SSH and transfers files to and from a remote machine. In this guide, you will learn how to connect and launch your JupyterLab user instance via SSH and transfer files using SFTP from your local machine. -Nebari includes a package called [`jupyterhub-ssh`](https://github.com/yuvipanda/jupyterhub-ssh) in all deployments to allow remote connection to their user instances. On Nebari, SSH connections are set up on port 8022 and SFTP connections on port 8023. +Nebari includes a package called [`jupyterhub-ssh`](https://github.com/yuvipanda/jupyterhub-ssh) in all deployments to allow remote connection to their user instances. On Nebari, SSH connections are set up on port 8022 and SFTP connections on port 8023. + +:::note +There is a distinction between the Nebari and JupyterHub servers, though these are easily conflated by end users. +Nebari itself is generally accessed via [kubectl](/how-tos/debug-nebari#installing-kubectl) +to connect directly to the cluster (nodes or pods), while the JupyterHub server runs _on_ Nebari and controls the spawning of +user instances of JupyterLab. The approach described here uses a JupyterHub plugin, `jupyterhub-ssh`, to spawn and access users' JupyterLab instance +::: ## Prepare for the connection on the Nebari deployment -You will create a JupyterHub _token_ in order to access your server remotely. To do this, log into your Nebari deployment and navigate to the JupyterHub token page, \. +You will create a JupyterHub _token_ in order to access your server remotely. To do this, log into your Nebari deployment and navigate to the JupyterHub token page, . This page is also accessible via the Nebari Home Page: -* If your deployment has `jhub-apps` enabled, you can navigate to this page by selecting the `Token` option under your username in the upper righthand corner. -* If your deployment does not have `jhub-apps` enabled, you can click on the `Token` link on the top navigation bar. +- If your deployment has `jhub-apps` enabled, you can navigate to this page by selecting the `Token` option under your username in the upper righthand corner. +- If your deployment does not have `jhub-apps` enabled, you can click on the `Token` link on the top navigation bar. You may add a note and expiration date to the token. You can leave the scopes field blank to give the token all the permissions that your user typically has on JupyterHub (which is the service on which Nebari is running). ## Connect to Nebari via SSH -Before you being, you'll need to have SSH installed on your local machine. From a terminal, use `ssh` to begin the connection. +Before you being, you'll need to have SSH installed on your local machine. From a terminal, use `ssh` to begin the connection. -`ssh \ -l \ -p 8022` +`ssh -l -p 8022` -:::note -The syntax for `\` is important - do not include `https://` or a trailing `/`. +:::important +The syntax for `` is important - do not include `https://` or a trailing `/`. + +If you have the incorrect syntax, it will result in the error: -If you have the incorrect syntax, it will result in the error: `Could not resolve hostname \: nodename nor servname provided, or not known` +`Could not resolve hostname : nodename nor servname provided, or not known` ::: -You will then be prompted for your password. Enter the token as the password and press `Enter`. +You will then be prompted for your password. Enter the token as the password and press `Enter`. If you don't already have a JupyterLab server running on your Nebari instance, it may take several minutes for the server to start up. The `ssh` connection has it's own timeout period which is likely shorter than the time it takes to spinup a new server. Therefore, you may see the following error as the `ssh` connection times out: `Starting your server............................................failed to start server on time!` -The good news is that Nebari is still working on spinning up your server. Retry the `ssh` connection until the connection is established once the server is up and accessible. +The good news is that Nebari is still working on spinning up your server. Retry the `ssh` connection until the connection is established once the server is up and accessible. Once the connection is complete, you will have terminal access to your JupyterLab instance on Nebari. ## Use SFTP to transfer files to/from Nebari -SFTP, which stands for _Secure File Transfer Protocol_, is a protocol built into SSH that can implement file transfer commands over a secure connection. The SFTP port on Nebari is 8023. +SFTP, which stands for _Secure File Transfer Protocol_, is a protocol built into SSH that can implement file transfer commands over a secure connection. The SFTP port on Nebari is 8023. -Utilizing SFTP will depend on how your local machine is configured and the utility you're using for SFTP. In some cases, your SSH configuration will allow SFTP to work "out of the box". Other times, special SFTP setup is required in your SSH configuration to allow for these connections. +Utilizing SFTP will depend on how your local machine is configured and the utility you're using for SFTP. In some cases, your SSH configuration will allow SFTP to work "out of the box". Other times, special SFTP setup is required in your SSH configuration to allow for these connections. ## Dangerous, but useful information :::warning -The following suggestion is not recommended unless absolutely necessary since it will artificially keep a JupyterLab instance running which may have financial repercussions. +The following suggestion is not recommended unless absolutely necessary since it will artificially keep a JupyterLab instance running which may have financial repercussions. ::: -If you have a long-running task and you need to avoid the idle-culler on JupyterLab, you can use [tmux](https://github.com/tmux/tmux/wiki) to keep your server alive while your task is completing. +If you have a long-running task and you need to avoid the idle-culler on JupyterLab, you can use [tmux](https://github.com/tmux/tmux/wiki) to keep your server alive while your task is completing. Short list of useful commands: + - Create a new session `tmux new -s mysession` - Detach from session ctrl + b d - List available session `tmux ls` From 93295c95052bb4941dbdabcf26c1b812a69806b7 Mon Sep 17 00:00:00 2001 From: Kim Pevey Date: Wed, 21 Aug 2024 12:27:54 -0500 Subject: [PATCH 5/8] fix relative link --- docs/docs/how-tos/connect-via-ssh.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/how-tos/connect-via-ssh.mdx b/docs/docs/how-tos/connect-via-ssh.mdx index 20ce0764..1ef87bc1 100644 --- a/docs/docs/how-tos/connect-via-ssh.mdx +++ b/docs/docs/how-tos/connect-via-ssh.mdx @@ -12,7 +12,7 @@ Nebari includes a package called [`jupyterhub-ssh`](https://github.com/yuvipanda :::note There is a distinction between the Nebari and JupyterHub servers, though these are easily conflated by end users. -Nebari itself is generally accessed via [kubectl](/how-tos/debug-nebari#installing-kubectl) +Nebari itself is generally accessed via [kubectl](/docs/how-tos/debug-nebari#installing-kubectl) to connect directly to the cluster (nodes or pods), while the JupyterHub server runs _on_ Nebari and controls the spawning of user instances of JupyterLab. The approach described here uses a JupyterHub plugin, `jupyterhub-ssh`, to spawn and access users' JupyterLab instance ::: From 88d94c59bea173c4dd11b3cc92ee4d8f134d4f44 Mon Sep 17 00:00:00 2001 From: Kim Pevey Date: Wed, 21 Aug 2024 13:29:14 -0500 Subject: [PATCH 6/8] Apply suggestions from code review Co-authored-by: Vinicius D. Cerutti <51954708+viniciusdc@users.noreply.github.com> --- docs/docs/how-tos/connect-via-ssh.mdx | 30 ++++++++++++++++++++------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/docs/docs/how-tos/connect-via-ssh.mdx b/docs/docs/how-tos/connect-via-ssh.mdx index 1ef87bc1..3230cfc4 100644 --- a/docs/docs/how-tos/connect-via-ssh.mdx +++ b/docs/docs/how-tos/connect-via-ssh.mdx @@ -30,21 +30,18 @@ You may add a note and expiration date to the token. You can leave the scopes fi ## Connect to Nebari via SSH -Before you being, you'll need to have SSH installed on your local machine. From a terminal, use `ssh` to begin the connection. +Before you begin, you'll need to have SSH installed on your local machine. From a terminal, use `ssh` to start the connection. `ssh -l -p 8022` :::important -The syntax for `` is important - do not include `https://` or a trailing `/`. - -If you have the incorrect syntax, it will result in the error: - -`Could not resolve hostname : nodename nor servname provided, or not known` +The syntax for `` is important - do not include `https://` or a trailing `/`. If you have the incorrect syntax, it will result in the error: +```Could not resolve hostname : nodename nor servname provided, or not known``` ::: You will then be prompted for your password. Enter the token as the password and press `Enter`. -If you don't already have a JupyterLab server running on your Nebari instance, it may take several minutes for the server to start up. The `ssh` connection has it's own timeout period which is likely shorter than the time it takes to spinup a new server. Therefore, you may see the following error as the `ssh` connection times out: +If you don't already have a JupyterLab server running on your Nebari instance, the server may take a few minutes to start up. The `ssh` connection has its own timeout period, likely shorter than the time it takes to spin up a new server. Therefore, you may see the following error as the `ssh` connection times out: `Starting your server............................................failed to start server on time!` @@ -54,10 +51,27 @@ Once the connection is complete, you will have terminal access to your JupyterLa ## Use SFTP to transfer files to/from Nebari -SFTP, which stands for _Secure File Transfer Protocol_, is a protocol built into SSH that can implement file transfer commands over a secure connection. The SFTP port on Nebari is 8023. +By default, SFTP uses the SSH protocol to authenticate and establish a secure connection. Because of this, the same authentication token used previously in its SSH counterpart can be used here. Utilizing SFTP will depend on how your local machine is configured and the utility you're using for SFTP. In some cases, your SSH configuration will allow SFTP to work "out of the box". Other times, special SFTP setup is required in your SSH configuration to allow for these connections. +Similar to `ssh`, from a terminal, use `sftp` to begin a new connection: +```sftp -l -p 8023``` + +### Transferring Files with SFTP + +Downloading Files: + +- Use the `get` command to download files from the remote host: + - `get ` downloads the file with the same name to the local system. + - `get ` downloads and saves the file with a different name. + - To download a directory and its contents, use `get -r `. + - To maintain permissions and access times, use `get -Pr `. + +Uploading Files: +- Use the `put` command to upload files to the remote system: + - `put ` uploads the file. + - To upload a directory and its contents, use `put -r `. ## Dangerous, but useful information :::warning From 2cf5c0199b26e386e567148336e3ace605811813 Mon Sep 17 00:00:00 2001 From: Kim Pevey Date: Wed, 21 Aug 2024 13:39:22 -0500 Subject: [PATCH 7/8] add token form image --- docs/docs/how-tos/connect-via-ssh.mdx | 21 ++++++++++++------- docs/static/img/how-tos/jupyterhub-token.png | Bin 0 -> 52548 bytes 2 files changed, 13 insertions(+), 8 deletions(-) create mode 100644 docs/static/img/how-tos/jupyterhub-token.png diff --git a/docs/docs/how-tos/connect-via-ssh.mdx b/docs/docs/how-tos/connect-via-ssh.mdx index 3230cfc4..63dcb235 100644 --- a/docs/docs/how-tos/connect-via-ssh.mdx +++ b/docs/docs/how-tos/connect-via-ssh.mdx @@ -26,6 +26,10 @@ This page is also accessible via the Nebari Home Page: - If your deployment has `jhub-apps` enabled, you can navigate to this page by selecting the `Token` option under your username in the upper righthand corner. - If your deployment does not have `jhub-apps` enabled, you can click on the `Token` link on the top navigation bar. +Fill out the form for token creation: + +![Form to create a new JupyterHub token](/img/how-tos/jupyterhub-token.png) + You may add a note and expiration date to the token. You can leave the scopes field blank to give the token all the permissions that your user typically has on JupyterHub (which is the service on which Nebari is running). ## Connect to Nebari via SSH @@ -36,7 +40,7 @@ Before you begin, you'll need to have SSH installed on your local machine. From :::important The syntax for `` is important - do not include `https://` or a trailing `/`. If you have the incorrect syntax, it will result in the error: -```Could not resolve hostname : nodename nor servname provided, or not known``` +`Could not resolve hostname : nodename nor servname provided, or not known` ::: You will then be prompted for your password. Enter the token as the password and press `Enter`. @@ -55,23 +59,24 @@ By default, SFTP uses the SSH protocol to authenticate and establish a secure co Utilizing SFTP will depend on how your local machine is configured and the utility you're using for SFTP. In some cases, your SSH configuration will allow SFTP to work "out of the box". Other times, special SFTP setup is required in your SSH configuration to allow for these connections. Similar to `ssh`, from a terminal, use `sftp` to begin a new connection: -```sftp -l -p 8023``` +`sftp -l -p 8023` ### Transferring Files with SFTP Downloading Files: - Use the `get` command to download files from the remote host: - - `get ` downloads the file with the same name to the local system. - - `get ` downloads and saves the file with a different name. - - To download a directory and its contents, use `get -r `. - - To maintain permissions and access times, use `get -Pr `. + - `get ` downloads the file with the same name to the local system. + - `get ` downloads and saves the file with a different name. + - To download a directory and its contents, use `get -r `. + - To maintain permissions and access times, use `get -Pr `. Uploading Files: - Use the `put` command to upload files to the remote system: - - `put ` uploads the file. - - To upload a directory and its contents, use `put -r `. + - `put ` uploads the file. + - To upload a directory and its contents, use `put -r `. + ## Dangerous, but useful information :::warning diff --git a/docs/static/img/how-tos/jupyterhub-token.png b/docs/static/img/how-tos/jupyterhub-token.png new file mode 100644 index 0000000000000000000000000000000000000000..d8fdac666f5d3b9e7dc432e25756ef229952eab4 GIT binary patch literal 52548 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 Date: Wed, 21 Aug 2024 16:24:31 -0300 Subject: [PATCH 8/8] Add new line --- docs/docs/how-tos/connect-via-ssh.mdx | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/docs/how-tos/connect-via-ssh.mdx b/docs/docs/how-tos/connect-via-ssh.mdx index 63dcb235..f62a12ca 100644 --- a/docs/docs/how-tos/connect-via-ssh.mdx +++ b/docs/docs/how-tos/connect-via-ssh.mdx @@ -59,6 +59,7 @@ By default, SFTP uses the SSH protocol to authenticate and establish a secure co Utilizing SFTP will depend on how your local machine is configured and the utility you're using for SFTP. In some cases, your SSH configuration will allow SFTP to work "out of the box". Other times, special SFTP setup is required in your SSH configuration to allow for these connections. Similar to `ssh`, from a terminal, use `sftp` to begin a new connection: + `sftp -l -p 8023` ### Transferring Files with SFTP