Авторизация В SSH По Ключам Из Внешнего Источника
Бывает такое, что нужно как-то пробрасывать в сервер публичные ключи.
В OpenSSH есть интересный механизм - выполнения приложения для получения ключа для конкретного пользователя - AuthorizedKeysCommand
Но здесь есть небольшая оговорка - пользователь уже должен быть в системе.
В общем добавляем в /etc/ssh/sshd_config
такое:
AuthorizedKeysCommand /usr/local/sbin/iam-ssh-auth
AuthorizedKeysCommandUser nobody
У меня получился такой странный скрипт:
#!/bin/bash
if [ $# -ne 1 ]; then
echo "Usage: $0 userid" >&2
exit 1
fi
if [ -f /etc/default/iam-ssh-auth ]; then
. /etc/default/iam-ssh-auth
else
echo "Could not find config file" >&2
exit 1
fi
userid=$1
if [ "$IAM_SSH_LOCAL_KEYS" = "YES" ]; then
keyfile="/var/lib/keys/${userid}.pub"
if [ -f $keyfile ]; then
cat $keyfile
fi
fi
if [ "$IAM_SSH_API_KEYS" = "YES" ]; then
if [ ! -z "$IAM_SSH_API_ADDR" ]; then
curl -s -H "Content-Type: text/plain" ${IAM_SSH_API_ADDR}/iam/host/$(hostname -f)/${userid}
curl -s -H "Content-Type: text/plain" ${IAM_SSH_API_ADDR}/iam/host/global/${userid}
fi
fi
Собственно здесь можно использовать авторизацию через локальные файлы и/или ходить в API для получения нужного.