SecureShell: Difference between revisions

From UMIACS
Jump to navigation Jump to search
(62 intermediate revisions by 19 users not shown)
Line 1: Line 1:
Secure Shell (or [http://en.wikipedia.org/wiki/Secure_Shell SSH]) is a network protocol allowing two computers to exchange data securely over an insecure network.  By default use of SSH brings the user to a terminal, but the protocol can be used for other types of data transfer such as [[SFTP]] and [[SCP]].
Secure Shell (or [http://en.wikipedia.org/wiki/Secure_Shell SSH]) is a network protocol allowing two computers to exchange data securely over an insecure network.  By default, use of SSH brings the user to a terminal, but the protocol can be used for other types of data transfer such as [[SFTP]] and [[SCP]].


==Connecting to an SSH Server==
==Connecting to an SSH Server==
Under RedHat Linux 3, 4, and 5, and Mac OS X, the following command from a terminal will connect a client computer to the UMIACS [[OpenLAB]].
Under Linux and macOS, the following command from a terminal will connect a client computer to the UMIACS [[OpenLAB]].
  # ssh bkirz@openlab.umiacs.umd.edu
  # ssh username@openlab.umiacs.umd.edu
This will give you access to a terminal on any one of the [[OpenLAB]] servers.  Note that by default you will not have access to applications that require X11 to run.
This will give you access to a terminal on any one of the [[OpenLAB]] servers.  Note that by default you will not have access to applications that require X11 to run.


On Windows XP or Vista hosts there are no SFTP clients installed by default.  Users can install either which will enable SSH and SFTP access.
All UMIACS-supported Windows hosts are installed with [http://www.chiark.greenend.org.uk/~sgtatham/putty/ PuTTY]. If you are using a self-supported machine, you can either download and install PuTTY yourself, or if you are running a [https://docs.microsoft.com/en-us/lifecycle/products/windows-10-enterprise-and-education currently supported version of Windows 10], you can install the OpenSSH client natively in Windows by following Microsoft's instructions [https://docs.microsoft.com/en-us/windows-server/administration/openssh/openssh_install_firstuse here]. Only the client is needed and not the server.
 
* [http://www.chiark.greenend.org.uk/~sgtatham/putty/ PuTTY]
* [http://ttssh2.sourceforge.jp/ ttssh2]
 
Alternatively, all users can use the UMIACS Intranet SFTP Web Applet located [https://intranet.umiacs.umd.edu/ssh/ here] without installing any additional software.


==X11 Forwarding==
==X11 Forwarding==
By default, SSH only gives the user shell access to a host.  Enabling X11 Forwarding allows users to run applications with Graphical User Interfaces.
By default, SSH only gives the user shell access to a host.  Enabling X11 Forwarding allows users to run applications with Graphical User Interfaces.


Under RedHat Linux 3, 4, and 5, and Mac OS X, the following command from a terminal will connect a client computer to the UMIACS [[OpenLAB]] using X11 Forwarding.
Under Linux and macOS, the following command from a terminal will connect a client computer to the UMIACS [[OpenLAB]] using X11 Forwarding. Please note that under macOS, [http://xquartz.macosforge.org/landing/ xQuartz] is required on the client machine to forward X sessions from the remote session.
  # ssh '''-X''' bkirz@openlab.umiacs.umd.edu
  # ssh '''-Y''' username@openlab.umiacs.umd.edu


'''Note:''' Mac users must have X11 installed in their systems for X11 forwarding to work. This can be checked by looking for X11.app in /Applications/Utilities.  You can find the installer [http://www.apple.com/support/downloads/x11formacosx.html here].
Under Windows, you will need to forward X through [http://sourceforge.net/projects/vcxsrv/ VcXsrv] or [http://www.straightrunning.com/XmingNotes/ Xming].


Windows users can enable X11 forwarding on UMIACS desktops by using cygwin to ssh -X.
First, enable X forwarding on PuTTY. The option is under Connection > SSH > X11, shown below.
If you do not have Cygwin, you will need to forward X through Xming.
First, enable X forwarding on your secure ssh client. The option is under tunneling in the ssh client settings. This only has to be done once.


[[Image:sshXForward.jpg]]
[[Image:Putty-x-forwarding.png]]


Next, click save in the main ssh appication window to save this setting.
Next, configure your SSH session and click open to start a SSH session.


After this has been done, every time you want to use X forwarding, you need to make sure Xming has been started (it will appear in your task tray) through the start menu programs.
After this has been done, every time you want to use X forwarding, you need to make sure VcXsrv or Xming has been started (it will appear in your task tray) through the start menu programs.
Now, you will be able to use Xwindow programs from your ssh client.
Now, you will be able to use Xwindow programs from your ssh client.
Note that the UMIACS Intranet SFTP Web Applet does ''not'' allow X11 Forwarding.


==SSH Tunneling==
==SSH Tunneling==
Line 41: Line 31:
Please see the [[SecureShellTunneling]] page for more information.
Please see the [[SecureShellTunneling]] page for more information.


==Passwordless SSH with SSH Keys==
==SSH Keys (and Passwordless SSH)==
 
SSH can utilize public key encryption to authenticate and authorize users. This can be considered more secure especially if you secure your private key with a pass-phrase. The keys themselves are not susceptible to brute force attacks like normal passwords over SSH are.
There are some situations where it is important to be able to ssh without entering a password. This is mostly required when working in clusters.  This is done using ssh keys.  Instead of authenticating with a password, ssh can use a pre-defined set of encryption keys to establish an authorized connection.
To setup passwordless ssh, do the following.
 
First, create an ssh key pair:
 
  # ssh-keygen -t dsa


The command will prompt you for a passphrase.  If you use a password, you will need to enter it at the beginning of your work session.  This is preferable as it is more secure but may cause problems for some clustered work, such as TORQUE/PBS cluster.  If you simply hit '''[enter]''', you will never be prompted for a password when ssh'ing which can lead to security problems.
Please see the [[SSH/Keys]] page for more information.


This will produce two files, '''id_dsa''' and '''id_dsa.pub''', the private and public keys respectivelyOnce you've created the keys, you will need to put them into place as follows:
==Verify remote host SSH fingerprint==
The SSH protocol relies on host keys to verify the identify of a given host. Each host as a unique key for the various different protocols supported.   


  # mkdir ~/.ssh
When connecting to a remove host for the first time, or when the remote host's local host key configuration has changed, you may see the following prompt:
  # chmod 700 ~/.ssh
<pre>
  # mv id_dsa ~/.ssh
$ ssh username@openlab.umiacs.umd.edu
  # chmod 600 ~/.ssh/id_dsa
The authenticity of host 'openlab.umiacs.umd.edu (128.8.132.250)' can't be established.
  # touch ~/.ssh/authorized_keys2
RSA key fingerprint is 25:83:aa:df:f5:ad:5f:08:c9:8a:a3:5d:97:8b:48:1f.
  # chmod 600 ~/.ssh/authorized_keys2
Are you sure you want to continue connecting (yes/no)?
  # cat id_dsa.pub >> authorized_keys2
</pre>
  # rm id_dsa.pub
It is considered best practice to verify the key fingerprint with the actual key of the host. UMIACS maintains a reference of SSH key fingerprints available at the following link:
https://gitlab.umiacs.umd.edu/staff/ssh-fingerprints/blob/master/fingerprints


It is '''very''' important that you keep your private key secure! Ensure that it is chmod'd to 600 and that you do not put it anywhere visible to other users!
It is important to note that each key type has a different fingerprint.  Depending on your local configuration, your client may prefer a specific type of key. The following commands can be used to determine the fingerprint of a given key type on a remote host:


If you did not select a passphrase when you generated your keys, you can now ssh without a password. If you did select a passphrase, you will need to activate the keys as follows:
<pre>
$ ssh-keyscan -t rsa openlab.umiacs.umd.edu > key
# openlab.umiacs.umd.edu:22 SSH-2.0-OpenSSH_8.0
$ ssh-keygen -l -E md5 -f key
2048 MD5:25:83:aa:df:f5:ad:5f:08:c9:8a:a3:5d:97:8b:48:1f openlab.umiacs.umd.edu (RSA)
</pre>


  # ssh-agent [SHELL]
If you have any questions, or notice a discrepancy, please submit a request to staff@umiacs.umd.edu.
  # ssh-add -t [TIME]


In this case, "[SHELL]" is your preferred shell and "[TIME]" is the amount of time you'd like the key to be active in seconds.  So, the following would start a bash shell with passwordless ssh active for 30 minutes:
===Windows / PuTTY Verification===
If you use PuTTY to connect to remote hosts, the prompt will be similar to the following:


  # ssh-agent bash
[[File:Putty ssh host key prompt.png]]
  # ssh-add -t 1800


You will be prompted for your passphrase and, when entered correctly, you will be able to ssh without entering a password.
If the host key reported by PuTTY matches the [https://gitlab.umiacs.umd.edu/staff/ssh-fingerprints/blob/master/fingerprints Documented entry for that host], it is safe to click 'yes'.  If they do not match, please report the issue to [mailto:staff@umiacs.umd.edu staff@umiacs.umd.edu].


To disable this functionality, simply delete your private key file ('''~/.ssh/id_dsa''') and remove the public key from your '''~/.ssh/authorized_keys2''' file.
===Other Platforms===
* [https://winscp.net/eng/docs/faq_hostkey WinSCP]
* [https://mobaxterm.mobatek.net/ MobaXterm]


==Passwordless SSH with SSH Keys for TORQUE/MAUI Cluster==
==Long Running Processes==
If you are dealing with a long running process that is inhibiting your ability to work regularly, you may want to run your processes inside a screen on the host that you're connecting to. This way, if the connection is dropped for any reason the screen session will automatically detach on the host and will continue running so that you can reattach it at a later time when you've connected again. Please see our documentation on [[Screen | GNU Screen]] for more information.


==Further Information==
==Further Information==
[http://www.openssh.org/ OpenSSH]
* [https://www.openssh.com/ OpenSSH]
 
* [https://docs.microsoft.com/en-us/windows-server/administration/openssh/openssh_install_firstuse OpenSSH on Windows]
[http://www.openssh.com/windows.html Windows Clients]

Revision as of 20:23, 6 July 2021

Secure Shell (or SSH) is a network protocol allowing two computers to exchange data securely over an insecure network. By default, use of SSH brings the user to a terminal, but the protocol can be used for other types of data transfer such as SFTP and SCP.

Connecting to an SSH Server

Under Linux and macOS, the following command from a terminal will connect a client computer to the UMIACS OpenLAB.

# ssh username@openlab.umiacs.umd.edu

This will give you access to a terminal on any one of the OpenLAB servers. Note that by default you will not have access to applications that require X11 to run.

All UMIACS-supported Windows hosts are installed with PuTTY. If you are using a self-supported machine, you can either download and install PuTTY yourself, or if you are running a currently supported version of Windows 10, you can install the OpenSSH client natively in Windows by following Microsoft's instructions here. Only the client is needed and not the server.

X11 Forwarding

By default, SSH only gives the user shell access to a host. Enabling X11 Forwarding allows users to run applications with Graphical User Interfaces.

Under Linux and macOS, the following command from a terminal will connect a client computer to the UMIACS OpenLAB using X11 Forwarding. Please note that under macOS, xQuartz is required on the client machine to forward X sessions from the remote session.

# ssh -Y username@openlab.umiacs.umd.edu

Under Windows, you will need to forward X through VcXsrv or Xming.

First, enable X forwarding on PuTTY. The option is under Connection > SSH > X11, shown below.

Putty-x-forwarding.png

Next, configure your SSH session and click open to start a SSH session.

After this has been done, every time you want to use X forwarding, you need to make sure VcXsrv or Xming has been started (it will appear in your task tray) through the start menu programs. Now, you will be able to use Xwindow programs from your ssh client.

SSH Tunneling

You can tunnel one or more ports through an SSH connection such that your packets will look like they are coming from the host you are tunneling to. This is helpful for services that you would be normally blocked by a firewall.

Please see the SecureShellTunneling page for more information.

SSH Keys (and Passwordless SSH)

SSH can utilize public key encryption to authenticate and authorize users. This can be considered more secure especially if you secure your private key with a pass-phrase. The keys themselves are not susceptible to brute force attacks like normal passwords over SSH are.

Please see the SSH/Keys page for more information.

Verify remote host SSH fingerprint

The SSH protocol relies on host keys to verify the identify of a given host. Each host as a unique key for the various different protocols supported.

When connecting to a remove host for the first time, or when the remote host's local host key configuration has changed, you may see the following prompt:

$ ssh username@openlab.umiacs.umd.edu
The authenticity of host 'openlab.umiacs.umd.edu (128.8.132.250)' can't be established.
RSA key fingerprint is 25:83:aa:df:f5:ad:5f:08:c9:8a:a3:5d:97:8b:48:1f.
Are you sure you want to continue connecting (yes/no)?

It is considered best practice to verify the key fingerprint with the actual key of the host. UMIACS maintains a reference of SSH key fingerprints available at the following link: https://gitlab.umiacs.umd.edu/staff/ssh-fingerprints/blob/master/fingerprints

It is important to note that each key type has a different fingerprint. Depending on your local configuration, your client may prefer a specific type of key. The following commands can be used to determine the fingerprint of a given key type on a remote host:

$ ssh-keyscan -t rsa openlab.umiacs.umd.edu > key
# openlab.umiacs.umd.edu:22 SSH-2.0-OpenSSH_8.0
$ ssh-keygen -l -E md5 -f key
2048 MD5:25:83:aa:df:f5:ad:5f:08:c9:8a:a3:5d:97:8b:48:1f openlab.umiacs.umd.edu (RSA)

If you have any questions, or notice a discrepancy, please submit a request to staff@umiacs.umd.edu.

Windows / PuTTY Verification

If you use PuTTY to connect to remote hosts, the prompt will be similar to the following:

Putty ssh host key prompt.png

If the host key reported by PuTTY matches the Documented entry for that host, it is safe to click 'yes'. If they do not match, please report the issue to staff@umiacs.umd.edu.

Other Platforms

Long Running Processes

If you are dealing with a long running process that is inhibiting your ability to work regularly, you may want to run your processes inside a screen on the host that you're connecting to. This way, if the connection is dropped for any reason the screen session will automatically detach on the host and will continue running so that you can reattach it at a later time when you've connected again. Please see our documentation on GNU Screen for more information.

Further Information