23-SSH Terminal Service Operation

Download


Chapter 1  SSH Terminal Services

1.1  SSH Terminal Services

1.1.1  Introduction to SSH

Secure Shell (SSH) can provide information security and powerful authentication to prevent such assaults as IP address spoofing, plain-text password interception when users log on to the Switch remotely via an insecure network environment.

A Switch can connect to multiple SSH clients. SSH2.0 is currently available. SSH client functions to enable SSH connections between users and the Switch or UNIX host that support SSH server.

Figure 1-1 and Figure 1-2 shows respectively SSH connection establishment for client and server.

l           SSH connections through LAN

Figure 1-1 Establish SSH channels through LAN

l           SSH connections through WAN

Figure 1-2 Establish SSH channels through WAN

The communication process between the server and client includes these five stages:

1)         Version negotiation stage. These operations are completed at this stage:

l           The client sends TCP connection requirement to the server.

l           When TCP connection is established, both ends begin to negotiate the SSH version.

l           If they can work together in harmony, they enter the key algorithm negotiation stage. Otherwise the server clears the TCP connection.

2)         Key and algorithm negotiation stage:

l           The server and the client send key algorithm negotiation packets to each other, which include the supported server-side public key algorithm list, encryption algorithm list, MAC algorithm list, and compression algorithm list.

l           Based on the received algorithm negotiation packets, the server and the client figure out the algorithms to be used.

l           The server and the client use the DH key exchange algorithm and parameters such as the host key pair to generate the session key and session ID.

Through the above steps, the server and the client get the same session key, which is to be used to encrypt and decrypt data exchanged between the server and the client later. The server and the client use session ID in the authentication stage.

3)         Authentication method negotiation stage. These operations are completed at this stage:

l           The client sends its username information to the server.

l           The server authenticates the username information from the client. If the user is configured as no authentication on the server, authentication stage is skipped and session request stage starts directly.

l           The client authenticates information from the user at the server till the authentication succeeds or the connection is turned off due to authentication timeout.

 

&  Note:

SSH supports two authentication types: password authentication and RSA authentication.

(1) Password authentication works as follows:

l      The client sends its username and password to the server.

l      The server compares the username and password received with those configured locally. The user is allowed to log on to the Switch if the usernames and passwords match exactly.

(2) RSA authentication works as follows:

l      Configure the RSA public key of the client user at the server.

l      The client sends the member modules of its RSA public key to the server.

l      The server checks the validity of the member module. If it is valid, the server generates a random number, which is sent to the client after being encrypted with RSA public key of the client.

l      Both ends calculate authentication data based on the random number and session ID.

l      The client sends the authentication data calculated back to the server.

l      The server compares it with its authentication data obtained locally. If they match exactly, the user is allowed to access the switch.

 

4)         Session request stage. The client sends session request messages to the server which processes the request messages.

5)         Interactive session stage. Both ends exchange data till the session ends.

1.1.2  SSH Server Configuration

The following table describes SSH server configuration tasks.

Table 1-1 Configure SSH2.0 server

Operation

Command

Remarks

Configure supported protocols

protocol inbound

Refer to “Configuring supported protocols

Generate a local RSA key pair

rsa local-key-pair create

Refer to “Generating or destroying RSA key pairs

Destroy the local RSA key pair

rsa local-key-pair destroy

Create an SSH user

ssh user username

Refer to “Create an SSH user

Specify a default authentication type for SSH users

ssh authentication-type default

Refer to “Configuring authentication type

Configure authentication mode for SSH users

ssh user username authentication-type

Set SSH authentication timeout time

ssh server timeout

Refer to “Configuring server SSH attributes

Set SSH authentication retry times

ssh server authentication-retries

Allocate public keys for SSH users

ssh user username assign rsa-key keyname

Refer to “Configuring client public keys

 

I. Configuring supported protocols

Table 1-2 Configure supported protocols

Operation

Command

Remarks

Enter system view

system-view

Enter one or multiple user interface views

user-interface [ type-keyword ] number [ ending-number ]

Required

Set the login authentication method

authentication-mode scheme [ command-authorization ]

Required

Configure the protocols supported in the user interface view(s)

protocol inbound { all |ssh | telnet }

Optional

By default, the system supports both Telnet and SSH.

 

  Caution:

l      When SSH protocol is specified, to ensure a successful login, you must configure the AAA authentication using the authentication-mode scheme command.

l      The protocol inbound ssh configuration fails if you configured authentication-mode password and authentication-mode none. When you configure SSH protocol successfully for the user interface, then you cannot configure authentication-mode password and authentication-mode none any more.

 

II. Generating or destroying RSA key pairs

The name of the server RSA key pair is in the format of switch name plus _host, H3C_host for example.

After you use the command, the system prompts you to define the key length.

In SSH2.0, the key length is in the range of 512 to 2048 (bits). With SSH2, some clients require that the keys generated by the server must be at least or more than 768 bits.

Table 1-3 Generate or destroy RSA key pairs

Operation

Command

Remarks

Enter system view

system-view

Generate a local RSA key pair

rsa local-key-pair create

Required

Destroy a local RSA key pair

rsa local-key-pair destroy

Required

 

  Caution:

l      For a successful SSH login, you must generate a local RSA key pair first.

l      You just need to execute the command once, with no further action required even after the system is rebooted.

l      If you use this command to generate an RSA key provided an old one exits, the system will prompt you to replace the previous one or not.

 

III. Create an SSH user

Table 1-4 Create an SSH user

Operation

Command

Description

Enter system view

system-view

Create an SSH user

ssh user username

Required

 

For an SSH user created by using this command, if you do not specify an authentication type by using the ssh user authentication-type command for this user, this SSH user adopts the default authentication type. On the other hand, if the default authentication type is not specified, you need to specify an authentication type for this SSH user.

IV. Configuring authentication type

New users must specify authentication type. Otherwise, they cannot access the switch.

Table 1-5 Configure authentication type

Operation

Command

Description

Enter system view

system-view

Specify a default authentication type for SSH users

ssh authentication-type default { password | rsa | password-publickey | all }

 At least one required;

By default, no authentication type is specified for an SSH user, and the user can not access the switch.

Configure authentication type for SSH users

ssh user username authentication-type { password | password-publickey | rsa| all }

 

Note that:

l           The ssh authentication-type default command is used to configure the default authentication type for all SSH users.

l           The ssh user username authentication-type command is used to configure an authentication type for a specific SSH user.

l           When both commands are configured with different authentication types, for the specific user (user specified by the username argument), the authentication type specified by the ssh user username authentication-type command will take effect instead of that specified for all SSH users.

 

  Caution:

l      If RSA authentication type is defined, then the RSA public key of the client user must be configured on the switch.

l      By default, no authentication type is specified for a new user, so they cannot access the switch.

l      For the password-publickey authentication type: SSHv1 client users can access the switch as long as they pass one of the two authentications. SSHv2 client users can access the switch only when they pass both the authentications.

l      For the password authentication, username should be consistent with the effective user name defined in AAA; for the RSA authentication, username is the SSH local user name, so that there is no need to configure a local user in AAA.

l      If the default authentication type for SSH users is password and local AAA authentication is adopted, you need not use the ssh user command to create an SSH user. Instead, you can use the local-user command to create a user name and its password and then set the service type of the user to SSH.

l      If the default authentication type for SSH users is password and remote authentication (RADIUS authentication, for example) is adopted, you need not use the ssh user command to create an SSH user, because it is created on the remote server. And the user can use its username and password configured on the remote server to access the network.

l      If you use the ssh user username authentication-type command to specify an authentication type for an inexistent SSH user, the system will create the SSH user automatically.

l      If the RSA authentication type is specified, you can use the user privilege level command to set the level of the commands available to the SSH users logging into the server. Additionally, the command levels accessible to the users adopting RSA authentication are the same.

l      If the password authentication type is specified, the command levels accessible to SSH users logging into the server are determined through AAA. In this case, the command level may vary with users.

 

V. Configuring server SSH attributes

Configuring server SSH authentication timeout time and retry times can effectively assure security of SSH connections and avoid illegal actions.

Table 1-6 Configure server SSH attributes

Operation

Command

Remarks

Enter system view

system-view

Set SSH authentication timeout time

ssh server timeout seconds

Optional

The timeout time defaults to 60 seconds.

Set SSH authentication retry times

ssh server authentication-retries times

Optional

The retry times defaults to 3.

 

VI. Configuring client public keys

You can configure RSA public keys for client users on the switch and specify RSA private keys, which correspond to the public keys, on the client. Then client keys are generated randomly by the SSH2.0 client software. This operation is not required for password authentication type.

Table 1-7 Configure client public keys

Operation

Command

Remarks

Enter system view

system-view

Enter public key view

rsa peer-public-key key-name

Required

Enter public key edit view

public-key-code begin

Configure the client public key

Enter the content of the public key

Required

When you input the key data, spaces are allowed between the characters you input (because the system can remove the spaces automatically); you can also press <Enter> to continue your input at the next line. But the key you input should be a hexadecimal digit string coded in the public key format.

Return to public key view from public key edit view

public-key-code end

The system saves public key data when exiting from public key edit view

Return to system view from public key view

peer-public-key end

Allocate public keys to SSH users

ssh user username assign rsa-key keyname

Required

Keyname is the name of an existing public key. If the user already has a public key, the new public key overrides the old one.

 

&  Note:

l      The above method requires you to transform the format of the public key on the client, and then manually configure the transformed public key on the server. So, the method is relatively more complex.

l      If you use the ssh user username assign rsa-key command to assign an public key for an inexistent SSH user, the system will create the SSH user automatically.

l      When configuring the public key for a client manually, you can copy the local host public key configuration on the client and then paste it to the server.

 

1.1.3  Configuring the SSH Client

A variety of SSH client software are available, such as PuTTY and OpenSSH. For an SSH client to establish a connection with an SSH server, you must complete these configuration tasks:

l           Specifying the IP address of the server.

l           Selecting the protocol for remote connection as SSH. Usually, a client can use a variety of remote connection protocols, such as Telnet, Rlogin, and SSH. To establish an SSH connection, you must select SSH.

l           Selecting the SSH version. Since the device supports SSH Server 2.0 now, select 2.0 for the client.

l           Specifying the RSA private key file. On the server, if RSA authentication is enabled for an SSH user and a public key is set for the user, the private key file corresponding to the public key must be specified on the client. RSA key pairs are generated by a tool of the client software.

The following takes the client software of PuTTY, PuTTYGen and SSHKEY as examples to illustrate how to configure the SSH client:

I. Generating the Client Keys

To generate the client key pair, run PuTTYGen.exe, choose SSH-2 RSA under Parameters and click Generate.

Figure 1-3 Generating the client keys (1)

Note that while generating the key pair, you must move the mouse continuously and keep the mouse off the green process bar in the blue box of shown in Figure 1-4. Otherwise, the process bar stops moving and the key pair generating process is stopped.

Figure 1-4 Generating the client keys (2)

After the key pair is generated, click Save public key and enter the name of the file for saving the public key (public in this case) to save the public key.

Figure 1-5 Generating the client keys (3)

Likewise, to save the private key, click Save private key. A warning window pops up to prompt you whether to save the private key without any precaution. Click Yes and enter the name of the file for saving the public key (private in this case) to save the private key.

Figure 1-6 Generating the client keys (4)

To generate RSA public key in PKCS format, run SSHKEY.exe, click Browse and select the public key file, and then click Convert.

Figure 1-7 Generating the client keys (5)

II. Specifying the IP address of the Server

Launch PuTTY.exe. The following window appears.

Figure 1-8 SSH client configuration interface 1

In the Host Name (or IP address) text box, enter the IP address of the server, Note that there must be a route available between the IP address of the server and the client.

III. Selecting the Protocol for Remote Connection

As shown in Figure 1-8, select SSH under Protocol.

IV. Selecting the SSH Version

From the category on the left pane of the window, select SSH under Connection. The window as shown in Figure 1-9 appears.

Figure 1-9 SSH client configuration interface 2

Under Protocol options, select 2 from Preferred SSH protocol version.

 

&  Note:

Some SSH client software, for example, Tectia client software, supports the DES algorithm only when the ssh1 version is selected. The PuTTY client software supports DES algorithm negotiation ssh2.

 

V. Opening an SSH Connection with RSA

If the client needs to use RSA authentication, you must specify the RSA private key file. If the client needs to use password authentication, this is not required.

From the category on the left of the window, Select Connection/SSH/Auth. The following window appears.

Figure 1-10 SSH client configuration interface 3

Click Browse… to bring up the file selection window, navigate to the private key file and click OK.

VI. Opening an SSH Connection with Password

1)         From the window shown in Figure 1-10, click Open. The following SSH client interface appears. If the connection is normal, you will be prompted to enter the username and password, as shown in Figure 1-11.

Figure 1-11 SSH client interface

2)         Enter the username and password to establish an SSH connection.

3)         To log out, enter the quit command.

1.1.4  Configuring the Device as an SSH Client

When the device connects to the SSH server as an SSH client, you can configure the SSH client to authenticate the SSH server during the first access.

l           The first authentication means that when the SSH client accesses the server for the first time and is not configured with the server host public key, the user can choose to continue accessing the server and save the host public key on the client for future authentication of the server.

l           With first authentication not supported, the client cannot authenticate the server if it is not configured with the server host public key. In this case, you must configure the host public key of the server and specify the key name on the client beforehand, so that the client can authenticate the server.

I. configure the device as an SSH client that supports first authentication

Table 1-8 Configure the device as an SSH client that supports first authentication

Operation

Command

Description

Enter system view

system-view

Enable the client to run initial authentication

ssh client first-time enable

Optional

By default, the client is enabled to run initial authentication.

Start the client to establish a connection with an SSH server

ssh2 { host-ip | host-name } [ port-num ] [ prefer_kex { dh_group1 | dh_exchange_group } | prefer_ctos_cipher { des | aes128 } | prefer_stoc_cipher { des | aes128 } | prefer_ctos_hmac { sha1 | sha1_96 | md5 | md5_96 } | prefer_stoc_hmac { sha1 | sha1_96 | md5 | md5_96 } ] *

Required

In this command, you can also specify the preferred key exchange algorithm, encryption algorithms and HMAC algorithms between the server and client.

HMAC: Hash-based message authentication code

 

II. configure the device as an SSH client that does not support first authentication

Table 1-9 Configure the device as an SSH client that does not support first authentication

Operation

Command

Description

Enter system view

system-view

Disable the SSH client from performing first authentication for the SSH server to be accessed

undo ssh client first-time

Required

By default, the SSH client performs first authentication.

Enter public key view

rsa peer-public-key keyname

Optional

Enter public key edit view

public-key-code begin

Configure the public key for the server

Input the public key directly

The input public key string can contain spaces and enters. The public key to be configured must be a hexadecimal string coded in the public format.

Quit to public key view

public-key-code end

The input public keys are saved when you quit the public key edit view.

Quit to system view

peer-public-key end

Specify the name of the host public key of the SSH server to be accessed on the SSH client

ssh client { server-ip | server-name } assign rsa-key keyname

Required

Connect the SSH client to the SSH server, and specify the preferred key exchange algorithm, the preferred encryption algorithm and the preferred HMAC algorithm for the SSH client and the SSH server

ssh2 { host-ip | host-name } [ port-num ] [ prefer_kex { dh_group1 | dh_exchange_group } | prefer_ctos_cipher { des | aes128 } | prefer_stoc_cipher { des | aes128 } | prefer_ctos_hmac { sha1 | sha1_96 | md5 | md5_96 } | prefer_stoc_hmac { sha1 | sha1_96 | md5 | md5_96 } ] *

Required

 

1.1.5  Displaying SSH Configuration

Use the display commands in any view to view the running of SSH and further to check the configuration result.

Table 1-10 Display SSH configuration

Operation

Command

Display host and server public keys

display rsa local-key-pair public

Display client RSA public key

display rsa peer-public-key [ brief | name keyname ]

Display SSH status and session information

display ssh server { status | session }

Display SSH user information

display ssh user-information [ username ]

Display the mappings between host public keys and SSH servers saved on a client

display ssh server-info

 

1.1.6  SSH Server Configuration Example

I. Network requirements

As shown in Figure 1-12, configure a local connection from the SSH client to the switch. The PC runs the SSH2.0-supported client software.

II. Network diagram

Figure 1-12 Network diagram for SSH server configuration

III. Configuration procedure

The configuration procedure varies with login authentication modes. However, you must complete the following three configuration tasks before any configuration procedure.

<H3C> system-view

[H3C] rsa local-key-pair create

Then, you must create a VLAN interface on the switch and assign an IP address, which the SSH client will use as the destination for SSH connection.

[H3C] interface vlan-interface 1

[H3C-Vlan-interface1] ip address 192.168.0.1 255.255.255.0

[H3C-Vlan-interface1] quit

Finally, you must configure an IP address (192.168.0.2 in this case) for the SSH client. This IP address and that of the VLAN interface on the switch must be in the same network segment.

1)         Set authentication type.

Settings for the two authentication types are described respectively in the following:

l           Password authentication

# Set AAA authentication on the user interfaces.

[H3C] user-interface vty 0 4

[H3C-ui-vty0-4] authentication-mode scheme

# Set the user interfaces to support SSH.

[H3C-ui-vty0-4] protocol inbound ssh

[H3C-ui-vty0-4] quit

# Set login protocol to SSH, specify commands of level 3, and authentication password to "abc" for user clinet001.

[H3C] local-user client001

[H3C-luser-client001] password simple abc

[H3C-luser-client001] service-type ssh level 3

[H3C-luser-client001] quit

[H3C] ssh user client001 authentication-type password

 

&  Note:

Select the default SSH authentication timeout time and authentication retry times. After these settings, run the SSN2.0-supported client software on other hosts connected to the switch. Log in to the switch using user name client001 and password abc.

 

l           RSA public key authentication

# Set AAA authentication on the user interfaces.

[H3C] user-interface vty 0 4

[H3C-ui-vty0-4] authentication-mode scheme

# Set the user interfaces to support SSH.

[H3C-ui-vty0-4] protocol inbound ssh

# Set the command level for the login users to 3.

[H3C-ui-vty0-4] user privilege level 3

[H3C-ui-vty0-4] quit

# Set login protocol to SSH and authentication type to RSA for user client001.

[H3C] ssh user client001 authentication-type rsa

At this time, the client supporting SSH2.0 will generate a random RSA key pair, including public key and private key. You need to add the RSA public key, a hexadecimal character string encoded by the SSHKEY.EXE software in accordance with the public key cryptography standards (PKCS), to the rsa peer-public-key on the specified SSH server in the following way.

# Configure client public keys on the server, with their name as Switch001.

[H3C] rsa peer-public-key Switch001

[H3C-rsa-public-key] public-key-code begin

[H3C-rsa-key-code] 308186028180739A291ABDA704F5D93DC8FDF84C427463

[H3C-rsa-key-code] 1991C164B0DF178C55FA833591C7D47D5381D09CE82913

[H3C-rsa-key-code] D7EDF9C08511D83CA4ED2B30B809808EB0D1F52D045DE4

[H3C-rsa-key-code] 0861B74A0E135523CCD74CAC61F8E58C452B2F3F2DA0DC

[H3C-rsa-key-code] C48E3306367FE187BDD944018B3B69F3CBB0A573202C16

[H3C-rsa-key-code] BB2FC1ACF3EC8F828D55A36F1CDDC4BB45504F020125

[H3C-rsa-key-code] public-key-code end

[H3C-rsa-public-key] peer-public-key end

# Specify a public key of Switch001 for user client001.

[H3C] ssh user client001 assign rsa-key Switch001

For the RSA authentication, you not only need to configure the IP address, protocol type, and protocol version of the SSH server, but also need to specify an RSA private key file (generated by the client software at random) on the client. After the SSH connection is established, enter the username as prompted to go into the configuration interface of the switch.

1.1.7  SSH Client Configuration Example

I. Network Requirements

As shown in Figure 1-13,

l           Switch A serves as an SSH client with user name as client001.

l           Switch B serves as an SSH server, with its IP address 10.165.87.136.

II. Network diagram

Figure 1-13 Network diagram for SSH client configuration

III. Configuration procedure

1)         Configure SwitchB

# Create an RSA host key pair

<H3C> system-view

[H3C] rsa local-key-pair create

# Create a VLAN interface and assign an IP address, which the SSH client will use as the destination for SSH connection.

[H3C] interface vlan-interface 1

[H3C-Vlan-interface1] ip address 10.165.87.136 255.255.255.0

[H3C-Vlan-interface1] quit

# Set the authentication method of the user interface to AAA for SSH client.

[H3C] user-interface vty 0 4

[H3C-ui-vty0-4] authentication-mode scheme

# Set the protocol that a remote user uses to login as SSH.

[H3C-ui-vty0-4] protocol inbound ssh

[H3C-ui-vty0-4] quit

# Set login protocol to SSH, specify commands of level 3, and authentication password to "abc" for user clinet001.

[H3C] local-user client001

[H3C-luser-client001] password simple abc

[H3C-luser-client001] service-type ssh level 3

[H3C-luser-client001] quit

# Set the SSH authentication method to password. The SSH authentication timeout period, number of SSH authentication attempts and server key pair update interval can be the default values.

[H3C] ssh user client001 authentication-type password

 

&  Note:

If you set the SSH authentication method to RSA, you need to configure a host public key of Switch A. For the specific configuration, refer to .1.1.6  SSH Server Configuration Example.

 

2)         Configure SwitchA

# Configure an IP address (10.165.87.137 in this case) for the VLAN interface on SwitchA. This IP address and that of the VLAN interface on SwitchB must be in the same network segment.

<H3C> system-view

[H3C] interface vlan-interface 1

[H3C-Vlan-interface1] ip address 10.165.87.137 255.255.255.0

[H3C-Vlan-interface1] quit

# Establish an SSH connection to server 10.165.87.136.

[H3C] ssh2 10.165.87.136

Username: client001

Trying 10.165.87.136 ...

Press CTRL+K to abort

Connected to 10.165.87.136 ...

 

The Server is not authenticated. Do you continue to access it?(Y/N):y

Do you want to save the server's public key?(Y/N):n

Enter password:

 

**************************************************************************

* Copyright(c) 2004-2007 Hangzhou H3C Tech. Co., Ltd. Ltd. All rights reserved*

* Without the owner's prior written consent,                                 *

* no decompiling or reverse-engineering shall be allowed.                    *

**************************************************************************

 

<H3C>