EC2-Schlüsselpaar-Authentifizierung

EC2-Schlüsselpaar-Authentifizierung

Ich habe ein benutzerdefiniertes EC2-AMI-Image erstellt und versuche, die AWS-Instanz mithilfe der EC2-Schlüsselpaar-Authentifizierung für einen Benutzer zu authentifizieren, USERVMindem ich die folgenden Schritte befolge.

  1. meine Kreation.
  2. ec2-run-instances …
  3. Erstellen Sie einen privaten Schlüssel mit ec2-create-keypair.
  4. Privater Schlüssel unter ~/.ssh/keypair.pem gespeichert und Berechtigung erteilt.
  5. Verbinden Sie die AWS-Instanz mitssh -v -i ~/.ssh/keypair.pem [email protected]

Entsprechende Debug-Logs:

OpenSSH_6.6.1, OpenSSL 1.0.1f 6 Jan 2014
debug1: Reading configuration data /etc/ssh/ssh_config 
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to ec2-52-23-236-90.compute-1.amazonaws.com [52.23.236.90] port 22.
debug1: Connection established.
debug1: permanently_set_uid: 0/0
debug1: identity file /root/.ssh/keypair_14_10_721pm.pem type -1
debug1: identity file /root/.ssh/keypair_14_10_721pm.pem-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.0p1 Debian-4+deb7u2
debug1: match: OpenSSH_6.0p1 Debian-4+deb7u2 pat OpenSSH* compat 0x04000000
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: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY   
debug1: Server host key: ECDSA 12:6d:09:82:fd:4b:0d:1d:88:3d:2a:65:31:c0:ad:cd
The authenticity of host 'ec2-52-23-236-90.compute-1.amazonaws.com (52.23.236.90)' can't be established.
ECDSA key fingerprint is 12:6d:09:82:fd:4b:0d:1d:88:3d:2a:65:31:c0:ad:cd.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'ec2-52-23-236-90.compute-1.amazonaws.com,52.23.236.90' (ECDSA) to the list of known hosts.
debug1: ssh_ecdsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Trying private key: /root/.ssh/keypair_14_10_721pm.pem
debug1: key_parse_private2: missing begin marker
debug1: read PEM private key done: type RSA
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: password
[email protected]'s password:
debug1: Authentication succeeded (password).
Authenticated to ec2-52-23-236-90.compute-1.amazonaws.com 

Die sshd_config lautet wie folgt:

# Package generated configuration file
# See the sshd(8) manpage for details
Protocol 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
UsePrivilegeSeparation yes
KeyRegenerationInterval 3600
ServerKeyBits 768
SyslogFacility AUTH
LogLevel INFO
LoginGraceTime 120
#PermitRootLogin yes
PermitRootLogin without-password
StrictModes no
RSAAuthentication yes
PubkeyAuthentication yes
#AuthorizedKeysFile     %h/.ssh/authorized_keys
IgnoreRhosts yes
RhostsRSAAuthentication no
HostbasedAuthentication no
#IgnoreUserKnownHosts yes
PermitEmptyPasswords no
ChallengeResponseAuthentication no
#PasswordAuthentication yes
# Kerberos options
#KerberosAuthentication no
#KerberosGetAFSToken no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes
# GSSAPI options
#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes
X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
AcceptEnv LANG LC_*
Subsystem sftp /usr/lib/openssh/sftp-server
UsePAM yes
UseDNS no

Das Problem, mit dem ich konfrontiert bin, ist, dass die AWS-Instanz nach einem Passwort fragt, wenn ich versuche, mich mit dem Benutzer anzumelden USERVM. Der öffentliche Schlüssel für den Benutzer USERVMwird beim Booten generiert und unter der AWS-Instanz abgelegt /home/USERVM/.ssh/authorized_keys. Derselbe Ansatz für den Benutzernamen rootfunktioniert jedoch einwandfrei, ohne dass nach einem Passwort gefragt wird. Jede Hilfe hier ist willkommen.

Bearbeiten: Die Berechtigungen für den Benutzer USERVMsind:

$ sudo ls -la /home/
total 36
drwxr-xr-x  6 root       root      4096 Oct 14 12:34 .
drwxr-xr-x 27 root       root      4096 Oct 15 16:39 ..
drwxr-xr-x  2 admin      www-data  4096 Oct 14 12:34 admin
drwxr-xr-x  3 USERVM     www-data  4096 Oct 15 16:42 USERVM
drwx------  2 root       root     16384 Oct 14 12:38 lost+found
drwxrwsrwx 22 tuser      www-data  4096 Oct 15 16:40 tuser
$ sudo ls -la /home/USERVM/
total 16
drwxr-xr-x 3 USERVM  www-data 4096 Oct 15 16:42 .
drwxr-xr-x 6 root    root     4096 Oct 14 12:34 ..
-rw------- 1 USERVM  www-data  105 Oct 15 16:42 .bash_history
drwx------ 2 root    root     4096 Oct 15 16:38 .ssh
$ sudo ls -la /home/USERVM/.ssh/
total 12
drwx------ 2 root    root     4096 Oct 15 16:38 .
drwxr-xr-x 3 USERVM  www-data 4096 Oct 15 16:42 ..
-rw------- 1 root    root     1203 Oct 15 16:39 authorized_keys

Beim Versuch, sich mit demselben Verfahren wie für den Benutzer anzumelden admin, USERVMwird nach einem Kennwort gefragt. rootEs funktioniert jedoch auch ohne Kennwortabfrage.

Antwort1

Ich hatte erwartet, dass es sich um das übliche Problem mit den Berechtigungen für die Datei mit den autorisierten Schlüsseln handelt, aber es ist subtil anders: dieEigentummüssen außerdem korrekt sein, d. h. die Dateien müssen Eigentum des Benutzers sein, der sie zur Authentifizierung verwendet.

Ich denke nicht, dass die Gruppeneigentümerschaft so wichtig ist, da die Dateien und Verzeichnisse nicht für Gruppen beschreibbar sein dürfen, aber es ist wahrscheinlich am besten, sie auf die primäre Gruppe des Benutzers festzulegen.

Als Sie dies taten, chown -R USERVM:www-data ~USERVM/.sshwar das Problem jedenfalls behoben.

verwandte Informationen