Skip to content

Commit

Permalink
Merge pull request #316 from Exabyte-io/docs/SOF-7548
Browse files Browse the repository at this point in the history
SOF-7548: update ssh instructions for windows
  • Loading branch information
pranabdas authored Jan 28, 2025
2 parents 21a4116 + 73c91ba commit 835e926
Show file tree
Hide file tree
Showing 5 changed files with 129 additions and 48 deletions.
3 changes: 3 additions & 0 deletions images/remote-connection/win10apps.webp
Git LFS file not shown
3 changes: 3 additions & 0 deletions images/remote-connection/win10features.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
25 changes: 18 additions & 7 deletions lang/en/docs/remote-connection/actions/transfer-files-scp.md
Original file line number Diff line number Diff line change
@@ -1,30 +1,41 @@
# Transfer Files via SCP

[SCP file transfers](../../remote-connection/ssh.md#transfer-files-with-scp) can be performed directly via any terminal instance opened in a local user machine running a Unix-based operating system, through the following commands (the user should replace the text inside braces below with the corresponding names/paths).
[SCP file transfers](../../remote-connection/ssh.md#transfer-files-with-scp) can
be performed directly via any terminal instance opened in a local user machine
with OpenSSH client installed, through the following commands (the user should
replace the text inside braces below with the corresponding names/paths).

1. To transfer local files **to** exabyte.io remote server (called "bohr"):
1. To transfer local files **to** mat3ra.com remote server (called "bohr"):

```bash
scp -i <path to private_key> <path to local file> <username>@login.mat3ra.com:<path inside login home>
```

2. To transfer remote files **from** exabyte.io server to local machine:
2. To transfer remote files **from** mat3ra.com server to local machine:

```
scp -i <path to private_key> <username>@login.mat3ra.com:<path inside login home> <path to local file>
```

## Examples

For example, let us assume that user `steve` would like to transfer a text file called `example.txt` under his local home directory to the remote "bohr" server, where the final destination is his personal `data` folder in the [Cluster Home](../../infrastructure/clusters/directories.md) directory for "cluster-001".

The command that he needs to enter to perform this file transfer, after opening a terminal instance on his own local machine, would be the following (assuming his private [ssh key](../ssh.md) file is stored locally under his home folder).
For example, let us assume that user `steve` would like to transfer a text file
called `example.txt` under his local home directory to the remote "bohr" server,
where the final destination is his personal `data` folder in the
[Cluster Home](../../infrastructure/clusters/directories.md) directory for
"cluster-001".

The command that he needs to enter to perform this file transfer, after opening
a terminal instance on his own local machine, would be the following (assuming
his private [ssh key](../ssh.md) file is stored locally under his home folder).

```bash
scp -i ~/ssh_key ~/example.txt [email protected]:cluster-001/data
```

The converse operation, to retrieve the remotely stored `example.txt` file and re-copy it under his local home directory, would consist in the following command.
The converse operation, to retrieve the remotely stored `example.txt` file and
re-copy it under his local home directory, would consist in the following
command.

```
scp -i ~/ssh_key [email protected]:cluster-001/data/example.txt ~/
Expand Down
144 changes: 104 additions & 40 deletions lang/en/docs/remote-connection/ssh.md
Original file line number Diff line number Diff line change
@@ -1,43 +1,96 @@
# Command Line Interface via SSH

The user can connect to the [Command Line Interface](../cli/overview.md) (CLI) of our platform using an **external SSH terminal client** under any Operating System (OS), as an alternative to the [Web Terminal](web-terminal.md).

We use **SSH keys** [^1] as a way to identify users and trusted computers during command line sessions. Keys provide improved security, however they need to be set properly before use. The steps included in the present page will guide the user through generating SSH keys and adding them to the account being employed.

Experienced users who are already familiar with how SSH clients operate under their preferred Operating System can navigate directly to the [Upload SSH key](#upload-ssh-key) section of the present page.

## OS-specific SSH Clients

We particularly recommend the following SSH clients for each OS.

- **Putty** [^2], a widespread SSH client for Windows.
- **OpenSSH** [^3], the standard protocol in Unix-based OSs (both Linux and Mac OS distributions) for connecting through SSH via the terminal.
Users can connect to the [Command Line Interface](../cli/overview.md) (CLI)
of our platform using an **SSH terminal client** under any Operating System
(OS), as an alternative to the [Web Terminal](web-terminal.md).

We use **SSH keys** [^1] to identify users and trusted computers during command
line sessions. Keys provide improved security, but they must be properly set up
before use. The steps on this page will guide you through generating SSH keys
and adding them to your account.

Experienced users who are already familiar with how SSH clients operate under
their preferred Operating System can navigate directly to the
[Upload SSH key](#upload-ssh-key) section below.

## SSH Client

Make sure you have a SSH client installed in your computer. We particularly
recommend the following SSH clients.

- **OpenSSH**[^2]: the standard protocol in Unix-based OSs (both Linux and
macOS distributions) for connecting through SSH via the terminal. <br/>Starting
from Windows version 10, OpenSSH client is included as a Windows Feature. Please
expand below section if OpenSSH is not enabled on your Windows computer. Once
enabled, both `ssh` and `scp` commands should be available via both
**PowerShell** and **Command Prompt**.
<details markdown="1">
<summary>
How to enable OpenSSH on Windows 10?
</summary>
1. Click on the Windows **Start menu** and search for **Apps and Features**.
Click on **Apps and Features** on the sidebar, then click **Optional
Features**.
![Windows 10 Apps and Features](../images/remote-connection/win10apps.webp)
2. Scroll down the list to check if **OpenSSH Client** is listed. Otherwise,
click the plus sign next to **Add a feature**, select **OpenSSH Client**,
and click **Install**.
![Windows 10 Apps and Features](../images/remote-connection/win10features.png){:style="max-width: 400px !important;"}
</details>

- **Putty**[^3]: a widespread SSH client for Windows users, can be used as an
alternative to OpenSSH.

## Generate SSH Keys

As introduced previously, SSH keys are necessary to connect to the CLI using the credentials for the account under consideration.
As introduced previously, SSH keys are necessary to connect to the CLI using the
credentials for the account under consideration. You can create a RSA key of
size 4096 bits with the following command:

External tutorials are available on how to generate such keys for each of the Putty [^4] and OpenSSH [^5] clients.
```bash
ssh-keygen -t rsa -b 4096 -C "[email protected]"
```
where `-C` flag refers to comment, which could be any identifier. You will be
prompted to specify a file to save the key. Press Enter to accept the default
location. When prompted, enter a secure passphrase for your key. This step is
optional but recommended for added security. After keys are generated, there
will be two files `id_rsa` and `id_rsa.pub`. Please upload the public key file
`id_rsa.pub` as described below.

Please refer to the external tutorials on the advanced usage of OpenSSH [^4] and
Putty [^5] clients.

## Upload SSH Key

After generating the keys, they need to be uploaded to our platform and associated with the user's account. This effectively establishes a **secure link** between the external SSH client and the corresponding Exabyte account.
After generating the keys, the public key need to be uploaded to our platform
and associated with the user's account. This effectively establishes a
**secure link** between the external SSH client and the corresponding Mat3ra
account.

We explain how to upload the SSH keys to our platform in a
[separate section](../accounts/ui/preferences/ssh.md) of the documentation.

We explain how to upload the SSH keys to our platform in a [separate section](../accounts/ui/preferences/ssh.md) of the documentation.

!!!warning "Privacy of SSH keys"
SSH keys are **private** and are meant to be used to identify exclusively the user with our platform. Any other user logged in with such private keys would automatically have access to the account's data and allocation, and because of this they should not be shared with anyone else.
SSH keys are **private** and are meant to be used to identify exclusively
the user with our platform. Any other user logged in with such private keys
would automatically have access to the account's data and allocation, and
because of this they should not be shared with anyone else.

## Connect to Server
## Connecting to Mat3ra Server

Once the secure SSH link is established via the SSH keys, the remote Exabyte server can be accessed as follows (the user should replace the text inside braces below with the corresponding names/paths).
Once the secure SSH link is established via the SSH keys, the remote Mat3ra
server can be accessed as follows (the user should replace the text inside
braces below with the corresponding names/paths).

!!!info "Name of remote server"
Our Exabyte server for accepting remote connections is referred to under the alias of **"bohr"**, and is accessible via the corresponding address `login.mat3ra.com`.
Our Mat3ra server for accepting remote connections is referred to under the
alias of **"bohr"**, and is accessible via the corresponding address
`login.mat3ra.com`.

### OpenSSH for Unix
### SSH using OpenSSH

1. The user should first change the permissions on the private key to be accessible to him/her only.
1. The user should first change the permissions on the private key to be
accessible to him/her only.

```
chmod 400 {path/to/your/private_key}
Expand All @@ -46,46 +99,57 @@ Once the secure SSH link is established via the SSH keys, the remote Exabyte ser
2. At the command prompt, the user should then enter the following command.

```
ssh -i {path/to/your/private_key} {exabyte.io_username}@login.mat3ra.com
ssh -i {path/to/your/private_key} {mat3ra.com_username}@login.mat3ra.com
```
### Putty for Windows
Instructions on how to operate Putty to connect to our remote server can be found in Ref. [^6]. The name of the server to be used in this case is the same as before, namely `login.mat3ra.com`.
Instructions on how to operate Putty to connect to our remote server can be
found in Ref. [^6]. The name of the server to be used in this case is the same
as before, namely `login.mat3ra.com`.
### Enter the CLI
Following successful SSH connection, the user is presented with the [CLI of our platform](../cli/overview.md).
Following successful SSH connection, the user is presented with the
[CLI of our platform](../cli/overview.md).
Some useful instructions are already contained in the CLI **splash welcome screen** greeting the user at the moment of login. A copy of this welcome screen is reproduced below.
Some useful instructions are already contained in the CLI
**splash welcome screen** greeting the user at the moment of login. A copy of
this welcome screen is reproduced below.
![CLI Welcome Screen](../images/remote-connection/CLI-Welcome-Screen.png "CLI Welcome Screen")
## Transfer Files with SCP
The user can also transfer files back and forth from his/her local hard drives to the folders on the remote Exabyte server. For this purpose, we recommend the **SCP file transfer protocol** [^7], which is also based on SSH.
The user can also transfer files back and forth from his/her local hard drives
to the folders on the remote Exabyte server. For this purpose, we recommend the
**SCP file transfer protocol** [^7], which is also based on SSH. Detailed
instructions on how to transfer files using `scp` is available
[in a separate page](actions/transfer-files-scp.md).
### Windows Instructions
On Windows, we recommend the **WinSCP** graphical user interface program [^8]. A tutorial demonstrating how to operate it can be retrieved in Ref. [^9].
Once OpenSSH client is enabled on [Windows](#ssh-client),
[scp](#transfer-files-with-scp) command should be available via Windows
**PowerShell** and **Command Prompt** terminals.
When using WinSCP, one would need to load the private key through its interface before connecting. Explanations on how to do so can be found in Ref. [^10].
### Unix Instructions
Alternatively, you may use **WinSCP** graphical user interface program [^8]. A
tutorial demonstrating how to operate it can be retrieved in Ref. [^9].
The instructions for Unix-based operating systems can be found [in a separate page](actions/transfer-files-scp.md).
When using WinSCP, one would need to load the private key through its interface
before connecting. Explanations on how to do so can be found in Ref. [^10].
## Links to Clients Documentation
[^1]: [SSH keys, Website](https://wiki.archlinux.org/index.php/SSH_keys)
[^2]: [Putty Homepage, Website](https://www.putty.org/)
[^2]: [OpenSSH Homepage, Website](https://www.openssh.com/)
[^3]: [OpenSSH Homepage, Website](https://www.openssh.com/)
[^3]: [Putty Homepage, Website](https://www.putty.org/)
[^4]: [Puttygen - Key Generator for Putty on Windows, Website](https://www.ssh.com/ssh/putty/windows/puttygen)
[^4]: [SSH-keygen - Generate a New SSH Key, Website](https://www.ssh.com/ssh/keygen/)
[^5]: [SSH-keygen - Generate a New SSH Key, Website](https://www.ssh.com/ssh/keygen/)
[^5]: [Puttygen - Key Generator for Putty on Windows, Website](https://www.ssh.com/ssh/putty/windows/puttygen)
[^6]: [How to Use Putty on Windows, Website](https://www.ssh.com/ssh/putty/windows/)
Expand Down
2 changes: 1 addition & 1 deletion mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ extra_javascript:
copyright: <a target="_blank" href="https://mat3ra.com">Exabyte Inc</a>. All rights reserved. | <a target="_blank" href="https://platform.mat3ra.com">Back to platform</a>

extra:
version: "2024.12.19"
version: "2025.1.23"
preload_javascript:
- /extra/js/preload_hotjar.js
- /extra/js/preload.js
Expand Down

0 comments on commit 835e926

Please sign in to comment.