Saturday, March 30, 2024

How to Setting Up OpenSSH / SSH Server on NixOS


Installing and enabling OpenSSH on NixOS differs from the process on traditional Linux distributions due to NixOS's distinctive package management system and immutable infrastructure. In this guide, we'll explore how to install OpenSSH and enable the sshd service on NixOS, highlighting the unique approach it takes.

Explaining the Difference:

Unlike traditional Linux distributions such as Debian or RHEL, where package managers like apt or dnf are used to install packages directly onto the running system, NixOS adopts a more declarative and atomic approach to package management. Instead of modifying the running system, NixOS builds a new configuration from specified packages and their dependencies in an isolated environment, effectively rendering the entire operating system immutable.

Reasons for the Different Approach:

The unique approach in NixOS serves several purposes:

  • Reproducibility: NixOS aims to provide a reproducible and reliable way of building the entire system from source, ensuring that the same configuration results in an identical system regardless of the underlying hardware.
  • Atomic Upgrades and Rollbacks: By building a new configuration instead of modifying the running system, NixOS allows for atomic upgrades and rollbacks. If an upgrade fails or introduces issues, users can easily revert to the previous configuration.
  • Avoiding Dependency Hell: NixOS's package management resolves dependencies in a manner that prevents conflicts between packages requiring different versions of the same dependency.
  • Declarative Configuration: NixOS promotes a declarative approach to system configuration, where the desired state of the system is described in a single configuration file (/etc/nixos/configuration.nix).

Step-by-Step Installation Guide:

# Edit the configuration.nix file to enable OpenSSH.

sudo nano /etc/nixos/configuration.nix


# Find and uncomment the following line. If it doesn't exist, simply add it.

{

[...]


# Enable OpenSSH daemon

 services.openssh.enable = true;


 [...]

}


# Optionally, customize OpenSSH configuration

# services.openssh.permitRootLogin = "no";

# services.openssh.passwordAuthentication = true;

# services.openssh.port = 22;

# services.openssh.protocol = "2";


# Save the changes and exit the text editor.


# Rebuild the NixOS system configuration to apply the changes.

sudo nixos-rebuild switch

Conclusion:

Setting up OpenSSH on NixOS follows a unique process due to its immutable infrastructure and declarative package management. By understanding these differences and following the step-by-step guide provided, users can effectively enable OpenSSH on their NixOS system and securely connect to it using SSH.

0 comments:

Post a Comment