O login SSH falha para instâncias do EC2 criadas a partir da imagem de funcionamento do EC2

2

Eu tenho uma instância do EC2 em funcionamento com vários usuários, alguns dos quais são chrooted para seus diretórios home, alguns dos quais são somente FTP e não têm acesso ao shell, etc ... ec2-user é a conta admin principal, embora outros também têm acesso root e logins completos do ssh. Tudo funciona muito bem na instância em execução.

Eu posso tirar uma imagem de instantâneo da instância e lançar novas instâncias a partir do instantâneo. Não importa o que eu selecione em termos do par de chaves associado à nova instância (use o par de chaves original para ec2-user, crie um novo par de chaves ou não use nenhum par de chaves), assim que a nova instância for iniciada e executada, não ssh no servidor usando o usuário ec2 ou qualquer outro usuário habilitado para ssh. ftp funciona bem, no entanto.

Os grupos de segurança não são um problema, até onde eu sei, o tráfego de entrada é permitido (e é o mesmo grupo de segurança que a instância original, de qualquer forma).

O / var / log / secure das tentativas de login me dá:

sshd[1739]: debug1: userauth-request for user ec2-user service ssh-connection method none
sshd[1739]: debug1: attempt 0 failures 0
sshd[1738]: debug1: user ec2-user does not match group list sftponly at line 142
sshd[1738]: debug1: PAM: initializing for "ec2-user"
sshd[1738]: debug1: PAM: setting PAM_RHOST to "..."
sshd[1738]: debug1: PAM: setting PAM_TTY to "ssh"
sshd[1739]: debug1: userauth-request for user ec2-user service ssh-connection method publickey
sshd[1739]: debug1: attempt 1 failures 0
sshd[1738]: debug1: temporarily_use_uid: 500/500 (e=0/0)
sshd[1738]: debug1: trying public key file /etc/ssh/keys/ec2-user
sshd[1738]: debug1: restore_uid: 0/0
sshd[1738]: debug1: temporarily_use_uid: 500/500 (e=0/0)
sshd[1738]: debug1: trying public key file /etc/ssh/keys/ec2-user
sshd[1738]: debug1: restore_uid: 0/0
sshd[1738]: Failed publickey for ec2-user from xx.xx.xx.xx port 60597 ssh2
sshd[1739]: Connection closed by xx.xx.xx.xx 
sshd[1739]: debug1: do_cleanup

É o mesmo erro para todos os usuários habilitados para ssh. Como você pode ver no log, eu mudei meu sshd_config na instância original para que ele procure pelas chaves públicas na pasta / etc / ssh / keys.

Eu montei as instâncias com falha como volumes na instância de trabalho. As chaves estão na pasta, com as mesmas permissões e os mesmos valores de chave, tudo conforme o esperado. Aqui está ls -al da pasta de chaves (.) E do arquivo ec2-user.

drwxr-xr-x. 2 root     root     4096 Dec  1 16:59 .
-rw-------. 1 ec2-user ec2-user  388 Jul 25 13:27 ec2-user

O que pode estar causando esse problema? Eu gostaria de resolver o problema no momento de salvar e lançar um instantâneo ou de configurar a instância original, mas não montar a instância problemática e fazer alterações manuais para que ela funcione, mas não corrija o problema maior.

ATUALIZAÇÃO: Aqui estão as configurações ativas no arquivo sshd_config:

#...
Protocol 2
#...
SyslogFacility AUTHPRIV
LogLevel DEBUG
#...
AuthorizedKeysFile /etc/ssh/keys/%u
#...
PasswordAuthentication no
#...
ChallengeResponseAuthentication no
#...
GSSAPIAuthentication yes
#...
GSSAPICleanupCredentials yes
#...
UsePAM yes
#...
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS
#...
X11Forwarding yes
#...
Subsystem       sftp    internal-sftp -f AUTH -l VERBOSE
#...
Match group sftponly
ChrootDirectory /home/%u
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp -l VERBOSE -f AUTH
#...
    
por cheepychappy 04.12.2013 / 19:07

2 respostas

1

Eu suspeito que esse seja um problema do SELinux. Verifique o contexto da pasta que você está usando, espero que não seja correto para guardar as chaves.

Temo que eu não tenha mais acesso a uma caixa Redhat para estabelecer exatamente qual deveria ser o contexto. Dito isso, tente isso:

ls -lZ /root/.ssh

Isso produzirá o contexto do selinux que sua nova pasta precisa ter. Se bem me lembro, deve ser algo como system_u: system_r: sshd_t

Em seguida, precisamos aplicar esse contexto de segurança ao novo local de chaves autorizadas:

semanage fcontext -a -t system_u:system_r:sshd_t “/etc/ssh/keys(/.*)?”

Que associou o contexto correto à localização das novas chaves. Finalmente, podemos aplicar o contexto ao novo local

restorecon -Rv /etc/ssh/keys
    
por 12.12.2013 / 18:47
0

A diretiva "AllowUsers" está definida em sshd_config? Talvez esteja configurado para um usuário específico no servidor original e o ssh ainda não tenha sido reiniciado, por isso ainda aceita todos os usuários?

Oh, eu acabei de ver isso na depuração: "user ec2-user não corresponde à lista de grupos sftponly na linha 142" fazer check sshd_config você pode ter permitido um grupo, ou permitido somente sftp?

    
por 12.12.2013 / 11:56