Como dar acesso temporário com SSH usando autoridade de certificação?

2

Estou tentando trabalhar no fornecimento de acesso temporário com SSH usando a autoridade de certificação em uma instância do aws EC2, mas não consigo fazê-lo corretamente. Por favor, você pode ajudar a dar orientações sobre como isso pode ser alcançado? Processo seguido mencionado abaixo:

Step 1: Generate CA certificate on user's machine (currently doing for testing) : ssh-keygen -f ssh_ca

Step 2: Generate user's ssh keys using (on users machine): ssh-keygen
-f user_ssh_key

Step 3: Generate CA approved public key using user's public key: ssh-keygen -s ssh_ca -I host_name -h -n host_name -V +1d user_ssh_key.pub , this gives user_ssh_key-cert.pub (Public key which is signed)

Step 4: Copied ssh_ca.pub (CA pub key) and user_ssh_key ,user_ssh_key-cert.pub (user's pub and private key) on server where i have to do ssh.

Step 5: Do sudo su, go to file: vim /etc/ssh/sshd_config, Add CA pub key using : TrustedUserCAKeys /etc/ssh/ssh_ca.pub, add host key using HostCertificate /etc/ssh/user_ssh_key-cert.pub and added private key using : HostKey /etc/ssh/user_ssh_key

Step 6: Do /etc/init.d/sshd restart

Step 7: Open file /etc/ssh/ssh_known_hosts, add @cert-authority * (Content of ssh_ca.pub, without any change)

When i try to do ssh using : ssh host_name@IP_ADDRESS

Getting this error during ssh which seems to be a issue :

debug1: Found CA key in /etc/ssh/ssh_known_hosts:1

key_cert_check_authority: invalid certificate

Certificate invalid: not a host certificate

debug1: No matching CA found. Retry with plain key

Alguém por favor pode ajudar a orientar neste processo, algo pequeno parece ter corrido mal e eu não consigo descobrir?

Atualmente, não tenho o nome do DNS, mas o endereço IP ao qual desejo me conectar.

Obrigado antecipadamente

    
por mitesh sharma 28.01.2018 / 17:24

1 resposta

3

Vou passar por todos os passos necessários para fornecer acesso ssh temporário:

1. Criar o par de chaves CA do usuário SSH

ssh-keygen -f <key-pair-name> -b 4096 Isso criará uma chave privada, que será usada para assinar as chaves públicas do usuário e uma chave pública que será colocada e configurada como chave CA Confiável no lado do servidor. A chave privada deve ser armazenada em um local seguro e protegida com uma senha strong.

2. Configurando uma chave CA de Confiança SSH em um servidor

a. Copie a chave pública da CA no diretório /etc/ssh/ e garanta que ela tenha a propriedade adequada (raiz do usuário, raiz do grupo) e permissões (0600, sem ACLs), assim:

-rw------- 1 root root 404 Jan 29 08:05 users_ca.pub

b. Adicione uma entrada em /etc/ssh/sshd_config para ativar o uso da CA

 # Allow access from signed keys
 TrustedUserCAKeys /etc/ssh/users_ca.pub

c. Valide a configuração do SSH e se nenhum erro for exibido, reinicie o daemon

sudo /usr/sbin/sshd -t -f /etc/ssh/sshd_config
sudo service ssh reload

3. Assinando a chave do usuário

a. Obter a chave privada da CA, que será usada para assinar a chave pública do usuário

b. Obtenha a chave pública do usuário

c. Assine a chave pública:

ssh-keygen -s users_ca -I awesomeuser -n serveruser -V +1d userkey.pub

onde os ssh-keygen switches usados acima são:

  • -s users_ca - chave privada da CA
  • -I awesomeuser - nome do usuário
  • -n serveruser - nome de usuário para o qual a autenticação é permitida
  • - V +1d - especifica um intervalo de validade ao assinar um certificado. Um intervalo de validade pode consistir em uma única vez, indicando que o certificado é válido começando agora e expirando naquele momento, ou pode consistir em duas vezes separadas por dois pontos para indicar um intervalo de tempo explícito. A hora de início pode ser especificada como uma data em YYYYMMDD format, uma vez em YYYYMMDDHHMMSS format ou uma hora relativa (até a hora atual) consistindo de um sinal de menos seguido por uma hora relativa no formato descrito em TIME FORMATS seção de sshd_config . A hora final pode ser especificada como YYYYMMDD date, YYYYMMDDHHMMSS time ou uma hora relativa começando com um caractere plus. Por exemplo: "+52w1d" (válido de agora para 52 semanas e um dia a partir de agora), "-4w:+4w" (válido de quatro semanas atrás para quatro semanas a partir de agora), "20100101123000:20110101123000" (válido a partir de 12:30, 1º de janeiro De 2010 a 12:30, 1º de janeiro de 2011), "-1d:20110101" (válido de ontem a meia-noite de 1º de janeiro de 2011).
  • userkey.pub - a chave pública do usuário

d. Quando uma chave pública é assinada, uma nova chave pública com o nome <old public key>-cert.pub (no exemplo acima do nome com userkey-cert.pub ) é gerada. Signed user key userkey-cert.pub: id "awesomeuser" serial 0 for serveruser valid from 2018-01-29T07:59:00 to 2018-01-30T08:00:53

e. A chave pública recém-criada deve ser retornada ao usuário. Depois que ele receber, ele poderá acessar o servidor configurado com a CA SSH.

Isso deve fazer isso por você.

    
por 29.01.2018 / 16:57