Airlock может проксировать SSH к существующим серверам OpenSSH (sshd) без установки бинарника airlock на узел. Серверы принимают динамически выданные сертификаты от CA Airlock.

Это быстрый способ подключить legacy-системы. В перспективе рекомендуется заменить sshd на airlock для полной поддержки RBAC, записи сессий без разрыва соединения, совместного доступа к сессиям и расширенной записи.

Proxy Service проверяет роли пользователя, аутентифицируется на OpenSSH-узле сертификатом CA Airlock и ведёт аудит.

Предварительные требования

  • OpenSSH 6.9+ на клиентской машине: ssh -V
  • Linux-хост с sshd 7.4+, без Airlock; порт SSH открыт для Proxy Service
  • airctl и airsh на административной машине

Шаг 1. Ресурс узла в кластере

Создайте openssh-node-resource.yaml:

kind: node
version: v2
sub_kind: openssh
metadata:
  name: a100fdd0-52db-4eca-a7ab-c3afa7a1564a
  labels:
    env: prod
spec:
  addr: 1.2.3.4:22
  hostname: openssh-node
  • spec.addr — IP и порт SSH
  • spec.hostname — имя для пользователей в Airlock
  • metadata.name — UUID (uuidgen)
airctl create -f openssh-node-resource.yaml

Шаг 2. Доверие sshd к CA Airlock

На хосте с sshd (замените airlock.example.com):

export KEY=$(curl 'https://airlock.example.com/webapi/auth/export?type=openssh' | sed "s/cert-authority\ //")
sudo bash -c "echo \"$KEY\" > /etc/ssh/airlock_openssh_ca.pub"
sudo bash -c "echo 'TrustedUserCAKeys /etc/ssh/airlock_openssh_ca.pub' >> /etc/ssh/sshd_config"
sudo systemctl restart sshd

Шаг 3. Сертификат хоста

Создайте роль для выпуска host-сертификатов (host-certifier.yaml):

kind: role
version: v5
metadata:
  name: host-certifier
spec:
  allow:
    rules:
      - resources: [host_cert]
        verbs: [list, create, read, update, delete]
airctl create -f host-certifier.yaml

Назначьте роль своему пользователю через airctl users update.

UUID узла:

airctl get node/openssh-node --format=json | jq -r ".[0].metadata.name"

Выпустите сертификат хоста:

ADDR=1.2.3.4,openssh-node,a100fdd0-52db-4eca-a7ab-c3afa7a1564a
airctl auth sign --host=${ADDR} --format=openssh --out=myhost

Скопируйте myhost и myhost-cert.pub на сервер в /etc/ssh, права 0600, добавьте в sshd_config:

HostKey /etc/ssh/myhost
HostCertificate /etc/ssh/myhost-cert.pub
sudo systemctl restart sshd

Шаг 4. Конфигурация SSH-клиента

Войдите в кластер:

airsh login --proxy=airlock.example.com --user=myuser
airsh config > ssh_config_airlock

Шаг 5. Подключение

USER=ubuntu
CLUSTER=airlock.example.com
PORT=22
ADDR_NODE=openssh-node
ssh -p ${PORT} -F ssh_config_airlock "${USER}@${ADDR_NODE}.${CLUSTER}"

Порт 22 переопределяется явно: у OpenSSH-узла нет обратного туннеля на 3022, Proxy Service подключается напрямую к spec.addr.

Airlock использует сертификаты OpenSSH. В разделе Principals сертификата должны быть все имена и адреса, по которым вы подключаетесь.

Следующие шаги

Для новых серверов предпочтительнее SSH-узел с агентом.