Install Arch Linux via SSH (Português)
Este artigo possui o intuito de mostrar aos usuários como instalar o Arch através de uma conexão SSH. Considere esta abordagem quando o host está em local remoto ou você quiser usar capacidade de copiar/colar de um cliente SSH para fazer a instalação do Arch.
Na máquina remota (destino)
Inicie a máquina destino em um ambiente Arch live por meio de uma imagem CD/USB Live: isso vai autenticar o usuário como root.
Neste ponto, configure a rede na máquina destino como, por exemplo, sugerido no Guia de instalação#Conectar à internet.
Em seguida, configure uma senha de root que é necessária para uma conexão SSH, já que a senha padrão do Arch para root é vazia:
# passwd
Agora, certifique-se que PermitRootLogin yes
está presente (e descomentado) no /etc/ssh/sshd_config
. Essa configuração vai permitir o login como root com autenticação com senha no servidor SSH.
Finalmente, inicie o daemon openssh com sshd.service
, que está incluído por padrão no live CD.
PermitRootLogin yes
do /etc/ssh/sshd_config
.Na máquina local
Na máquina local, conecte à máquina destino via SSH com o seguinte comando:
$ ssh root@endereço.ip.do.destino
A partir daqui, uma mensagem de boas-vindas do ambiente live será apresentada, e será possível administrar a máquina como se estivesse sentado em frente ao teclado físico. Neste ponto, se a intenção apenas instalar o Arch da mídia live, siga o guia em Guia de instalação. Se a intenção é editar uma instalação Linux existente que está com problemas, siga o artigo wiki Instalar a partir de um Linux existente.
Instalação em um servidor headless
Esta seção descreve a instalação do Arch Linux em um servidor headless (usando a máquina Intel NUC como exemplo) sem teclado, mouse ou monitor. Isso envolve três etapas:
- Criar uma imagem live do Arch Linux modificada usando Archiso. A modificação é projetada para fazer três coisas:
- Conectar-se automaticamente à rede Wi-Fi (possivelmente protegida por senha) no momento da inicialização.
- Executar o daemon SSH no momento da inicialização
- Criar um arquivo
/root/.ssh/authorized_keys
para o root que contenha sua chave pública. O padrão/etc/ssh/sshd_config
permite que o root efetue login no SSH usando autenticação de chave pública.
- Inicializar a máquina headless em um ambiente Arch live, inserindo a mídia de instalação que contém a imagem de inicialização modificada acima e inicializando-a.
- Aguardar um minuto ou mais para permitir que o tempo da máquina headless seja inicializado e conectado à rede Wi-Fi. Na sua máquina existente (com teclado e tela), faça acesso via SSH ao ambiente Arch live no servidor headless e conclua a instalação conforme descrito no Guia de instalação.
O restante desta seção descreve a primeira etapa da criação de uma imagem live modificada. Tudo isso feito em uma máquina com uma instalação existente do Arch Linux, que normalmente também será a máquina da qual você planeja fazer o SSH na máquina headless.
- Instale Archiso e, como explicado em Archiso (Português)#Preparar um perfil personalizado, copie o perfil releng para uma pasta adequada:
cp -r /usr/share/archiso/configs/releng/ /root/archlive
- Crie um arquivo definindo o SSID da sua rede, a senha e o arquivo de chave pública. Isso pode ser mesclado no arquivo de script descrito abaixo, mas eu prefiro manter alguma separação entre código e dados.
/root/archlive/my-build-config.sh
SSID=ssid_da_sua_rede_wifi PASSWORD=senha_da_sua_rede_wifi PUBLIC_KEY=/caminho/para/sua/chave/pública
- Crie um script de compilação personalizado que instale os pacotes necessários, habilite os serviços desejados e copie o arquivo de chave pública para a imagem de inicialização. Este script faz várias modificações na imagem de inicialização:
- Isso copia a chave pública para o diretório
.ssh/allowed_keys
. Como explicado em Archiso (Português)#Adicionando arquivos para a imagem, isso deve ser feito criando um diretórioskel
dentro deairootfs/
e copie os arquivos lá. O SSH é muito específico sobre permissões de arquivo e também devemos definir essas permissões. - Isso configura a imagem de inicialização para conectar-se à rede Wi-Fi na inicialização usando NetworkManager e sua interface de linha de comando nmcli. Existem várias etapas envolvidas nisso:
- Instale o NetworkManager bem como os drivers e firmwares da conexão sem fio o que no caso do Intel NUC é o linux-firmware. Como explicado em Archiso (Português)#Selecionando pacotes, a instalação de pacotes adicionais é realizada adicionando estes pacotes às listas de pacotes em
packages.x86_64
.
- Instale o NetworkManager bem como os drivers e firmwares da conexão sem fio o que no caso do Intel NUC é o linux-firmware. Como explicado em Archiso (Português)#Selecionando pacotes, a instalação de pacotes adicionais é realizada adicionando estes pacotes às listas de pacotes em
- Isso copia a chave pública para o diretório
- Inicie o
NetworkManager.service
na inicialização adicionando o comando necessáriosystemctl enable
acustomize_airootfs.sh
conforme explicado em Archiso (Português)#Preparar um perfil personalizado - Verifique se o comando necessário
nmcli dev wifi connect
é executado automaticamente na inicialização. A imagem de inicialização é configurada por padrão para fazer login automático para fazer root na inicialização. Quando o root (ou qualquer outro usuário) efetua login, os scripts em/etc/profile.d
são executados. Então, tudo o que precisamos fazer é criar um script executável em/etc/profile.d
com o comando necessárionmcli dev wifi connect
. No script abaixo, a senha está entre um conjunto de aspas misteriosas; essa citação é necessária apenas se a senha for realmente uma senha (com espaços incorporados).
- Inicie o
- Inicie o
sshd.service
na inicialização adicionando o comando necessáriosystemctl enable
acustomize_airootfs.sh
conforme explicado em Archiso (Português)#Preparar um perfil personalizado - Finalmente, o script de compilação personalizado deve executar o script de compilação original (
./build.sh
) para criar a imagem de inicialização.
/root/archlive/my-build.sh
# carrega os vakires de SSID PASSWORD PUBLIC_KEY source my-build-config.sh # copia PUBLIC_KEY para authorized_keys mkdir -p airootfs/etc/skel/.ssh cp $PUBLIC_KEY airootfs/etc/skel/.ssh/authorized_keys chmod 700 airootfs/etc/skel/.ssh chmod 600 airootfs/etc/skel/.ssh/authorized_keys # instala o networkmanager echo networkmanager >> packages.x86_64 # instala o linux-firmware (necessário para Intel NUC) echo linux-firmware >> packages.x86_64 # habilita sshd e NetworkManager echo systemctl enable sshd.service NetworkManager.service \ >> airootfs/root/customize_airootfs.sh # conecta a rede Wi-Fi no login mkdir -p airootfs/etc/profile.d echo nmcli dev wifi connect "$SSID" password '"'"$PASSWORD"'"' \ >> airootfs/etc/profile.d/connect-wifi.sh chmod +x airootfs/etc/profile.d/connect-wifi.sh # executa o script de compilação original ./build.sh
Torne o script executável e execute-o:
cd /root/archlive chmod +x my-build.sh ./my-build.sh
A imagem de inicialização modificada agora está pronta (na pasta /root/archlive/out/
) e pode ser copiada para uma mídia de instalação (unidade USB) usando dd
:
dd bs=4M if=out/archlinux_xxxxxx of=/dev/sdxx status=progress oflag=sync