Install Arch Linux via SSH
This article is intended to show users how to install Arch remotely via an SSH connection. Consider this approach when the host is located remotely or you wish to use the copy/paste ability of an SSH client to do the Arch install.
On the remote (target) machine
Boot the target machine into a live Arch environment via the Live CD/USB image: this will log the user in as root.
At this point, setup the network on the target machine as for example suggested in Installation guide#Connect to the internet.
Secondly, setup a root password which is needed for an SSH connection, since the default Arch password for root is empty:
Now check that
PermitRootLogin yes is present (and uncommented) in
/etc/ssh/sshd_config. This setting allows root login with password authentication on the SSH server.
Finally, start the openssh daemon with
sshd.service, which is included by default on the live CD.
On the local machine
On the local machine, connect to the target machine via SSH with the following command:
$ ssh firstname.lastname@example.org
From here one is presented with the live environment's welcome message and is able to administer the target machine as if sitting at the physical keyboard. At this point, if the intent is to simply install Arch from the live media, follow the guide at Installation guide. If the intent is to edit an existing Linux install that got broken, follow the Install from existing Linux wiki article.
Installation on a headless server
This section describes installation of Arch Linux on a headless server without a keyboard, mouse or display. It uses an additional drive with cloud-init NoCloud configuration to automatically configure OpenSSH authorized keys and optionally iwd connection(s).
Prepare cloud-init configuration files
There are two required cloud-init configuration files:
meta-data file can be empty:
$ printf "" > meta-data
user-data will contain the relevant configuration:
#cloud-config users: - name: root ssh_authorized_keys: - ssh-ed25519 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - ssh-ed25519 YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
ssh-ed25519 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX with your public SSH key. To add multiple keys, simply repeat the statement as shown above.
To automatically connect to a Wi-Fi network, use the
write_files: statement to create iwd network configuration files in the correct directory. For example:
#cloud-config users: - name: root ssh_authorized_keys: - ssh-ed25519 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - ssh-ed25519 YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY write_files: - content: | [Security] PreSharedKey=aafb192ce2da24d8c7805c956136f45dd612103f086034c402ed266355297295 path: /var/lib/iwd/spaceship.psk
Once both files are created they need to be placed on a drive with an ISO 9660 or FAT volume labeled
Using an additional FAT formatted drive
You will need to attach this drive to the headless machine in addition to the one with the official ISO.
Using an additional ISO
cloud-init.iso file using xorriso from :
$ xorrisofs -output cloud-init.iso -volid CIDATA -joliet -rational-rock meta-data user-data
Prepare the cloud-init data medium by burning
cloud-init.iso to an optical disc or, if deployment options permit, use the ISO as is.
Using a single USB flash drive
If the installation image is written to e.g. a USB flash drive, provided there is enough space on the drive, and additional partition to house cloud-init data can be created.
First follow USB flash installation medium#Using the ISO as is (BIOS and UEFI) to prepare the USB flash drive installation medium.
Use fdisk to edit drive's MBR partition table without touching the ISO 9660 or invalid GPT structures:
# fdisk -t mbr --wipe never /dev/sdX
Create a new (third) partition and set its partition type to
0c. When done, write the partition table to disk.
# mkfs.fat -n CIDATA /dev/sdX3
Mount the file system and copy the
user-data to the root of it.
Using a single custom-built ISO
Alternatively, create a custom ISO using Archiso. This allows using only one drive regardless of type.
Use the releng profile as basis. Place the cloud-init configuration files in
airootfs/var/lib/cloud/seed/nocloud/ and build the ISO.
Boot from the installation medium
Once finished, deploy the installation medium and the cloud-init data medium (if it is separate) to the headless machine using the appropriate method.
Power up the headless machine and boot into a live Arch environment from the installation medium. Wait for a minute or so to allow the headless machine time to boot up and connect to the network.