SSH PKI 인증

SSH PKI 인증

우리 회사에서는 현재 AD 인증을 Linux 서버에 통합하고 있습니다. 저는 PBISO(Power Broker Identity Service)를 사용하여 이 부분을 수행할 수 있었습니다. 사용자는 AD 계정을 사용하여 로그인할 수 있습니다.

이제 한 단계 더 나아가서 내 임무는 공개 키를 통해 비밀번호 없는 로그인을 활성화하는 것입니다. 여기서 문제가 발생합니다. 이를 달성하려면 각 사용자의 공개 키를 ~/.ssh/authorized_keys에 붙여넣어야 합니다. 그러나 이는 비실용적이며 매우 비효율적입니다. 이를 자동화하는 방법을 찾아야 합니다. 이것이 스크립트로 작성될 수 있다고 말할 수도 있지만 저는 이것이 더 깊은 토끼굴이라고 믿습니다. AD 홈 디렉터리는 수동으로 생성할 수 없습니다.

제가 생각해낸 변형 중 하나는 사용자를 /home/group1/과 같은 그룹 디렉터리로 리디렉션하는 것입니다. 그래서 저는 이 로컬 사용자 group1을 생성한 다음 이를 테스트하기 위해 /home/group1/.ssh/authorized_keys에 aduser pubkey를 추가했습니다. aduser로 SSH를 실행하면 키를 사용하는 대신 비밀번호를 묻습니다. group1 로컬 사용자로 ssh하는 경우에만 작동합니다.

질문: 공개 키를 로컬 사용자 ~/.ssh/authorized_keys에 저장하고 다른 사용자로 로그인할 수 있습니까? 이것이 가능하다면 어떻게 작동하게 할 수 있습니까?

내 목표는 사용자가 AD 계정을 사용하여 로그인하고, /home/group1/로 리디렉션하고, 비밀번호 없는 인증을 위해 Authorized_keys를 사용하도록 하는 것입니다.

어떤 의견이라도 감사하겠습니다. 감사해요.

답변1

@PhilipCouling의 의견 덕분에 내 작업에 대한 해결책을 찾았습니다.

공개 키를 가져올 조회 스크립트를 실행하기 위해 /etc/ssh/sshd_config에서 AuthorizedKeysCommand 및 AuthorizedKeysCommandUser를 활성화했습니다.

AuthorizedKeysCommand /sshkey-check.sh AuthorizedKeysCommandUser root

이 스크립트에서는 해시 배열에 사용자 키를 추가하고 인증을 위해 해당 키를 에코합니다.

즉, ssh domain\aduser1@centosbox입니다.

#!/bin/bash

declare -A keys

# remove the domain name and the backslash from the username entered, i.e. domain\
user=$(echo $1 | sed 's@.*\\@@') 

keys[aduser1]="public key"
keys[aduser2]="public key"
keys[aduser3]="public key"

echo ${keys[${user}]}

관련 정보