SSH Servers

Create an integration to manage access to SSH servers

SSH servers are secure, remote access points that allow users to connect to and manage systems over encrypted connections.

Through this integration, Apono enables managing secure Just-in-Time (JIT) access to SSH servers. Admins can create access flows for specific SSH servers and define approval processes and access durations for different users, groups, and shifts.

When a user's access request is approved, Apono creates a certificate that grants access to the server and assigns the requester to the appropriate access group(s). Apono may also use the user's default Linux group.


Prerequisites

Item
Description

Apono Connector

On-prem connection serving as a bridge between an SSH server and Apono:

Minimum Required Version: 1.4.0

Learn how to update an existing AWS, Azure, GCP, or Kubernetes connector.

Apono Secret

Value generated with the credentials of the SSH server user

Create your secret based on your SSH server private key in base64 format.

"key": "base64_private_key"
"value": "<SSH_SERVER_PRIVATE_KEY>"

To find the private key in base64 format, run the following command.

cat /PATH-TO-KEY/key.pem | base64

Apono does not store credentials. The Apono connector uses the secret to communicate with services in your environment and separates the Apono web app from the environment for maximal security.

User with Key Pair Authentication

Dedicated SSH server user account that authenticates with SSH key pairs

In the sudoers file, add the following line to allow Apono to execute commands with sudo privileges without a password prompt.

apono ALL=(ALL) NOPASSWD:ALL

JSON List of Servers

Structured list of SSH servers to which Apono will connect

The following information should be provided for each server:

  • name: Unique identifier for the server

  • host: IP address or hostname of the server

  • user: (Optional) Username for the SSH connection. Default: apono

  • port: (Optional) SSH port number. Default: 22

  • tags: (Optional) Labels for grouping server resources for dynamic access management.

JSON List of Servers Example
[{"name":"My Server 1","host":"10.0.100.1","user":"apono","port":22,"tags":{"key1":"value1","key2":"value2"}},{"name":"My Server 2","host":"10.0.100.2","user":"ec2-user","port":22,"tags":{"key1":"value1","key2":"value2"}},{"name":"My Server 3","host":"10.0.100.3","port":4422,"user":"ec2-user"},{"name":"My Server 4","host":"10.0.100.4","user":"root","port":22,"tags":{"key1":"value1","key2":"value2"}},{"name":"My Server 5","host":"10.0.100.5","user":"root","port":4422,"tags":{"key1":"value1","key2":"value2"}}]

User Groups

(Optional) User groups representing access to the SSH servers

Default: Default

The default represents access to the server with the user's default Linux group.

IMPORTANT: Learn more about user groups and permissions

When setting up the integration, be sure to list the groups and their associated permissions. This is important for granting sudo or other elevated permissions.

Follow these steps to grant users sudo permissions:

  1. Create a dedicated sudoers group.

  2. Add the group to the sudoers file. Replace %GROUP_NAME with the sudoers group name.

%GROUP_NAME ALL=(ALL:ALL) ALL
  1. Update the integration and workflow to assign users to this group when they request SSH access

Alternatively, you can use existing groups listed in the sudoers file (such as admin, sudo) if you prefer not to create a dedicated group.


Integrate SSH servers

SSH tile

Follow these steps to complete the integration:

  1. On the Catalog tab, click SSH. The Connect Integration page appears.

  2. Under Discovery, click Next. The Apono connector section expands.

  3. From the dropdown menu, select a connector. Choosing a connector links Apono to all the services available on the account where the connector is located.

If the desired connector is not listed, click + Add new connector and follow the instructions for creating a connector (AWS, Azure, GCP, Kubernetes).

  1. Click Next. The Integration Config page appears.

  2. Define the Integration Config settings.

Setting
Description

Integration Name

Unique, alphanumeric, user-friendly name used to identify this integration when constructing an access flow

Servers

Minified JSON list of servers

User Groups

(Optional) Names of groups in the server representing the sudoer role

User's Login Shell

(Optional) Command-line interface program used to log in to an account via SSH

User Key Name

(Optional) Filename of the SSH key pair used for authentication

  1. Click Next. The Secret Store section expands.

  2. Click Next. The Get more with Apono section expands.

  3. Define the Get more with Apono settings.

Setting
Description

Credential Rotation

(Optional) Number of days after which the database credentials must be rotated

Learn more about the Credentials Rotation Policy.

User cleanup after access is revoked (in days)

(Optional) Defines the number of days after access has been revoked that the user should be deleted

Learn more about Periodic User Cleanup & Deletion.

Custom Access Details

(Optional) Instructions explaining how to access this integration's resources Upon accessing an integration, a message with these instructions will be displayed to end users in the User Portal. The message may include up to 400 characters. To view the message as it appears to end users, click Preview.

Integration Owner

(Optional) Fallback approver if no resource owner is found Follow these steps to define one or several integration owners:

  1. From the Attribute dropdown menu, select User or Group under the relevant identity provider (IdP) platform.

  2. From the Value dropdown menu, select one or multiple users or groups.

NOTE: When Resource Owner is defined, an Integration Owner must be defined.

Resource Owner

(Optional) Group or role responsible for managing access approvals or rejections for the resource Follow these steps to define one or several resource owners:

  1. Enter a Key name. This value is the name of the tag created in your cloud environment.

  2. From the Attribute dropdown menu, select an attribute under the IdP platform to which the key name is associated. Apono will use the value associated with the key (tag) to identify the resource owner. When you update the membership of the group or role in your IdP platform, this change is also reflected in Apono.

NOTE: When this setting is defined, an Integration Owner must also be defined.

  1. Click Confirm.

💡Are you integrating with Apono using Terraform?

If you want to integrate with Apono using Terraform, follow these steps instead of clicking Confirm:

  1. At the top of the screen, click View as Code. A modal appears with the completed Terraform configuration code.

  2. Click to copy the code.

  3. Make any additional edits.

  4. Deploy the code in your Terraform.

Refer to Integration Config Metadata for more details about the schema definition.

Now that you have completed this integration, you can create access flows that grant permission to your SSH instance.

Last updated

Was this helpful?