AWS Simple Directory Service에 대해 SSHD 인증

AWS Simple Directory Service에 대해 SSHD 인증

AWS Simple Directory Service 디렉터리에 대해 공개 키를 인증하는 sshd를 사용하여 Centos 7 시스템의 네트워크를 설정하려고 합니다.

현재 저는 Centos 호스트, Windows Server 2008 인스턴스, Amazon Web Service(AWS) Simple Directory Service를 사용하는 디렉터리를 보유하고 있습니다. Windows 상자는 디렉터리를 관리하는 데 사용되며 Centos 상자는 디렉터리를 사용하여 SSH 세션을 인증합니다. 모든 컴퓨터가 디렉터리에 가입되었습니다.

간단한 비밀번호 인증을 사용하여 로컬 및 도메인 사용자 모두로 Centos 상자에 SSH로 연결할 수 있음을 확인했습니다. 마찬가지로 로컬 계정과 도메인 계정, 간단한 비밀번호 인증을 모두 사용하여 Windows 상자에 RDP를 실행할 수 있습니다.

그러나 내 디렉터리에 AWS가 설정한 스키마에는 sshPublicKey말하자면 기본적으로 제공되는 필드가 있는 클래스가 포함되어 있지 않습니다.

그래서 Windows 상자의 Active Directory 스키마 스냅인을 사용하여 내 스키마에 다음 특성을 추가했습니다.

Common Name: sshPublicKey
OOID: 1.3.6.1.4.1.24552.1.1.1.13
Syntax: IA5-String
Multi-valued: true

그런 다음 다음 클래스를 만들었습니다.

Common Name: LDAP Public Key
OOID: 1.3.6.1.4.1.24552.500.1.1.2.0 
Parent Class: top
Class Type: Auxiliary
Optional Attributes: sshPublicKey

그런 다음 ADSI 스냅인을 사용하여 사용자의 공개 키 내용을 sshPublicKey디렉터리 항목 필드에 추가했습니다.

PasswordAuthentication no내 Centos 상자 중 하나에서 sshd의 구성 파일을 설정하여 비밀번호 인증을 비활성화했습니다 .

그런 다음 속성이 설정된 디렉터리 사용자를 사용하여 해당 Centos 상자에 SSH로 연결하려고 시도했습니다 sshPublicKey.

$ ssh -l [email protected] -i ~/.ssh/path.to.key.pub centos.box -vvv;
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /Users/localuser/.ssh/config
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: /etc/ssh_config line 53: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to centos.box [ip addy] port 22.
debug1: Connection established.
debug3: Incorrect RSA1 identifier
debug3: Could not load "~/.ssh/path.to.key.pub" as a RSA1 public key
debug1: identity file ~/.ssh/path.to.key.pub type 1
debug1: identity file ~/.ssh/path.to.key.pub type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.2
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.6.1
debug1: match: OpenSSH_6.6.1 pat OpenSSH*
debug2: fd 3 setting O_NONBLOCK
debug3: load_hostkeys: loading entries for host "centos.box" from file "/Users/localuser/.ssh/known_hosts"
debug3: load_hostkeys: found key type RSA in file /Users/localuser/.ssh/known_hosts:someLineNumber
debug3: load_hostkeys: loaded 1 keys
debug3: order_hostkeyalgs: prefer hostkeyalgs: [email protected],[email protected],ssh-rsa
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug2: kex_parse_kexinit: diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
debug2: kex_parse_kexinit: [email protected],[email protected],ssh-rsa,[email protected],[email protected],ssh-dss
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,[email protected],[email protected],aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected]
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,[email protected],[email protected],aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected]
debug2: kex_parse_kexinit: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-md5,hmac-sha1,[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-md5,hmac-sha1,[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: none,[email protected],zlib
debug2: kex_parse_kexinit: none,[email protected],zlib
debug2: kex_parse_kexinit: 
debug2: kex_parse_kexinit: 
debug2: kex_parse_kexinit: first_kex_follows 0 
debug2: kex_parse_kexinit: reserved 0 
debug2: kex_parse_kexinit: [email protected],ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
debug2: kex_parse_kexinit: ssh-rsa,ecdsa-sha2-nistp256
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,[email protected],[email protected],[email protected],aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected]
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,[email protected],[email protected],[email protected],aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected]
debug2: kex_parse_kexinit: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-md5,hmac-sha1,[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-md5,hmac-sha1,[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: none,[email protected]
debug2: kex_parse_kexinit: none,[email protected]
debug2: kex_parse_kexinit: 
debug2: kex_parse_kexinit: 
debug2: kex_parse_kexinit: first_kex_follows 0 
debug2: kex_parse_kexinit: reserved 0 
debug2: mac_setup: found [email protected]
debug1: kex: server->client aes128-ctr [email protected] none
debug2: mac_setup: found [email protected]
debug1: kex: client->server aes128-ctr [email protected] none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug2: dh_gen_key: priv key bits set: 116/256
debug2: bits set: 535/1024
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Server host key: RSA blah
debug3: load_hostkeys: loading entries for host "centos.box" from file "/Users/localuser/.ssh/known_hosts"
debug3: load_hostkeys: found key type RSA in file /Users/localuser/.ssh/known_hosts:someLine
debug3: load_hostkeys: loaded 1 keys
debug1: Host 'centos.box' is known and matches the RSA host key.
debug1: Found key in /Users/localuser/.ssh/known_hosts:27
debug2: bits set: 509/1024
debug1: ssh_rsa_verify: signature correct
debug2: kex_derive_keys
debug2: set_newkeys: mode 1
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug2: set_newkeys: mode 0
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug2: service_accept: ssh-userauth
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug2: key: /Users/localuser/.ssh/path.to.key.pub (0x7fb3cb600000), explicit
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic
debug3: start over, passed a different list publickey,gssapi-keyex,gssapi-with-mic
debug3: preferred publickey,keyboard-interactive,password
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /Users/localuser/.ssh/path.to.key.pub
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic
debug2: we did not send a packet, disable method
debug1: No more authentication methods to try.
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
$

그리고 Centos 상자에서는 다음을 얻습니다.

$ sudo journalctl -felu sshd
....
Some Date centos.box sshd[a number]: Connection closed by 1.2.3.4 [preauth]

개인 키에 대한 권한은 다음과 같습니다 600. 공개 키에 대한 권한은 다음과 같습니다.644

디렉터리 서비스 호스트에서 서버 로그를 확인하는 방법을 잘 모르겠습니다.

내가 뭘 잘못하고 있는지 어떤 아이디어가 있습니까?

답변1

sshd공개 키 인증을 위해 대화 하려면 호스트 sssd에서 다음을 수행하십시오 sshd.

  1. [sssd]파일 섹션 에 다음 줄을 추가합니다 /etc/sssd/sssd.conf.

    services = ssh, [ all the other services already listed there as well ]
    

이는 sssd와 대화해야 함을 나타냅니다 sshd.

  1. 섹션 이 아직 없으면 파일 의 [ssh]빈 섹션을 추가합니다 .[ssh]/etc/sssd/sssd.conf

    [ssh]
    

이는 대화하는 모든 서비스에 대한 필수 구성 섹션입니다 sssd.

  1. [domain/directory.server]파일 섹션 에 다음 줄을 추가합니다 /etc/sssd/sssd.conf. 여기서 은 directory.server디렉터리 서비스 호스트의 정규화된 도메인 이름입니다.

    ldap_user_ssh_public_key = sshPublicKey
    

이는 사용자의 공개 SSH 키를 sssd찾는 데 사용할 속성을 알려줍니다. sshd(에서 사용되는 기본 속성 sssd은 및 클래스 ipaSshPubKey의 스키마에서 찾을 수 있습니다 .ipaSshUseripaSshHost)

  1. 파일 에 다음 줄을 추가합니다 /etc/sshd/sshd_config.

    AuthorizedKeysCommand /usr/bin/sss_ssh_authorizedkeys
    AuthorizedKeysCommandUser nobody
    

이는 사용자로 sshd파일을 실행하라는 의미입니다 . 호스트 에 인증을 시도하는 사용자에 대해 인증된 키를 가져옵니다 ./usr/bin/sss_ssh_authorizedkeysnobody/usr/bin/sss_ssh_authorizedkeyssshd

  1. 파일 에 다음 줄을 추가합니다 /etc/sshd/ssh_config.

    GlobalKnownHostsFile /var/lib/sss/pubconf/known_hosts
    ProxyCommand /usr/bin/sss_ssh_knownhostsproxy -p %p %h
    

이는 sssd클라이언트의 이름과 공개 키를 클라이언트에 추가하고 /var/lib/sss/pubconf/known_hosts클라이언트에 연결하고 실행 파일을 사용하여 표준 I/O를 통해 모든 통신을 연결하도록 지시합니다 /usr/bin/sss_ssh_knownhostsproxy.

  1. 두 서비스를 모두 다시 시작합니다.

    $ sudo systemctl reload sshd;
    $ sudo systemctl restart sshd;
    $ sudo systemctl restart sssd;
    

관련 정보