Use storage to store public server key, and private key when setting the SSH client. Private key is used in case of using the authentication method by key.
Storage setup
• | Specify the path to be used to store information about keys in the Path / KeyPath property |
• | It is required to obtain server public key in order to authenticate the server. There are two ways to obtain this key: |
1. | The key can be previously obtained from the server as described in the Keys transferring topic. |
2. | Upon the first connect to the server you receive its public key that has to be stored in the storage for the future use to authenticate the server. However, in this case the key is passed through the unprotected channel and can be substituted by a malefactor. |
1. | Open the component editor of the storage component by double click on the component and select the Keys tab. |
2. | Add a new key by pressing the New button. |
4. | Import information from the obtained file by using the "Import from..." button. |
If the authentication by a key is used, it is required to create the user key:
1. | Open the component editor of the storage component by double click on the component and select the Keys tab. |
2. | Pressing the New button and type the key name. |
3. | Choose the algorithm to use and the needed key length. |
4. | Push the Generate button to generate a new key. |
5. | Export the public key and pass it to the server in order to the server be able to authenticate the client. |
SSH client setup
• | Select a storage object in the KeyStorage property. |
• | Specify the host name on which the SSH server is located in the HostName property. |
• | Specify the server public key in the HostKeyName property. |
• | Specify the user name in the User property. |
• | If authentication by password is used, specify password in the Password property. |
• | If authentication by key is used, specify the private key name in the PrivateKeyName property. The HostName value is used as a default key name. You can find steps to create a new key above in this topic. |
• | Establish connection to the server setting the Connected property to True. |
You should create an SSH channel in order to exchange data with a remote host.
SSH channel setup
• | Select an SSH client in the Client property. |
• | Specify the host name in DestHost and the TCP/IP port number in DestPort to which the connection should be established. |
• | Specify the port number in SourcePort, data from which will be forwarded to the remote host to which the connection is established. |
• | Open the SSH channel setting the Connected property to True. |
Random numbers generating
When establishing a connection to the SSH server, random numbers for creating session keys are generated. These keys will be used in the data encryption algorithms. For getting random numbers, pseudo random number generators are used. Before using the pseudo random number generator, you should initialize it, by setting a start seed value. This seed value can be obtained in different ways: using processor step counter, sound card noise, information of random mouse movements, or pressure of keyboard keys. However, the first two ways is not reliable.
One of such ways is implemented in the SSHClient demo.
When using the SecureBridge component library, you should pass a sequence of the random values to the Randomize method of the global Random object.