우리 회사에서는 SSH 공개 키 인증을 비활성화했기 때문에 매번 비밀번호를 수동으로 입력해야 합니다(변경할 계획은 없습니다 /etc/ssh/sshd_config
).
그러나 인증 gssapi-keyex
은 gssapi-with-mic
활성화됩니다( ssh
아래 디버그 출력 참조).
이 경우 자동 로그인을 사용하는 방법은 무엇입니까?
활용 gssapi-keyex
및/또는 gssapi-with-mic
인증할 수 있나요?
> ssh -v -o PreferredAuthentications=publickey hostxx.domainxx
OpenSSH_5.3p1, OpenSSL 1.0.0-fips 29 Mar 2010
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: Connecting to hostxx.domainxx [11.22.33.44] port 22.
debug1: Connection established.
debug1: identity file /home/me/.ssh/identity type -1
debug1: identity file /home/me/.ssh/id_rsa type -1
debug1: identity file /home/me/.ssh/id_dsa type 2
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3
debug1: match: OpenSSH_5.3 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.3
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Host 'hostxx.domainxx' is known and matches the RSA host key.
debug1: Found key in /home/me/.ssh/known_hosts:2
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: gssapi-keyex,gssapi-with-mic,password
debug1: No more authentication methods to try.
Permission denied (gssapi-keyex,gssapi-with-mic,password).
답변1
아마도.
- 표준 로그인 프로세스를 통해 또는 수동으로(
kinit
Windows용 MIT Kerberos) 클라이언트 시스템에서 주체의 티켓을 얻을 수 있습니까? - 서버에 Kerberos 주체가 있습니까? 아니면 이를 제공할 수 있습니까? 다음과 같아야합니다.
host/[email protected]
GSSAPI
클라이언트에 인증이 활성화되어 있습니까?- 클라이언트는 DNS TXT 리소스 레코드 또는 로컬 매핑을 통해 서버가 어느 영역에 속하는지 알고 있습니까?
당신이 "예"라고 말하면모두이상, 축하합니다. 사용하실 수 있습니다 GSSAPIAuthentication
.
- 설정에 따라 자격 증명 위임을 활성화해야 할 수도 있습니다.
테스트 단계: (
가정: 도메인 = example.com, 영역 = 예제.COM)
kinit [email protected]
pam_krb5
이상적으로 이는 적절한pam_sss
경우 표준 로그인 프로세스를 통해 수행됩니다 .auth_provider = krb5
pam stack
kvno host/[email protected]
- 디버깅 단계입니다. 유효한 캐시가 있고 또는를 지원하는 개체와 통신하는 경우
ssh
이 작업은 자동으로 수행됩니다 .sshd
gssapi-with-mic
gssapi-keyex
- 디버깅 단계입니다. 유효한 캐시가 있고 또는를 지원하는 개체와 통신하는 경우
dig _kerberos.example.com txt
반환해야"EXAMPLE.COM"
- 또는 매핑을
[domain_realm]
as의 일부에 저장할 수 있지만 이 접근 방식이 확장성이 더 좋습니다./etc/krb5.conf
.example.com = EXAMPLE.COM
dns
- 또는 매핑을
ssh -o GSSAPIAuthentication=yes [email protected]
- 서버에서 주체가 아닌 다른 사용자 이름으로 로그인하려면 이를 매핑할 위치를 알아야 합니다. 여기서는 자세히 설명하지 않겠습니다.
답변2
4단계 접근 방식은 정확합니다(DNS에는 더 우아한 Kerberos SRV 레코드가 있으며 모든 Active Directory에 존재합니다). 나는 항상 이것을 사용해 왔으며 주로 보안 및 제어 관련 이유로 위의 공개 키 접근 방식을 사용하는 것을 항상 옹호해 왔습니다.
즉, 이는 대화형 로그인만 제공하지만 워크스테이션에 티켓이 있으면 준대화형이 될 수 있습니다. Kerberos 티켓은 SSH 프록시와 매우 유사하게 작동하며, 새로운 연결은 즉시 이루어지며 시간 제한이 있지만 비밀번호가 필요하지 않습니다.
대화형 대량 로그인을 얻으려면 SSH 키의 개인 부분과 마찬가지로 Kerberos 계정의 비밀번호가 기본적으로 포함된 keytab 파일을 얻어야 합니다. 특히 키탭은 암호화되거나 비밀번호로 보호되지 않기 때문에 해당 보안 예방 조치가 적용됩니다.
나는 사용자에게 개인 계정에 대한 키탭을 제공하는 것을 매우 꺼려하지만 특히 원격 시스템에 자격 증명을 위임하는 것이 중요한 경우 최소한의 권한으로 서비스 계정을 적극적으로 사용하여 다양한 일괄 작업을 수행하며 pubkey가 이를 달성할 수 있습니다.
키탭은 Unix에서는 ktutil을 사용하고 Windows에서는 KTPASS.EXE를 사용하여 생성할 수 있습니다(후자는 AD Kerberos 서비스에서 사용). ktutil은 Heimdal과 MIT의 두 가지 형태로 존재하며 해당 구문이 다릅니다. 관련 시스템의 맨페이지를 읽어보는 것이 도움이 될 수 있습니다.