SSH Autorizado Chaves Exemplo de Uso

SSH Autorizado Chaves Exemplo de Uso

Ssh (shell seguro) é um protocolo usado para sistemas de acesso remotamente e com segurança (criptografados). O servidor SSH é executado na máquina remota e o cliente SSH em sua máquina de trabalho. A comunicação entre cliente e servidor é típica através da linha de comando. Agora, existem várias maneiras de autenticar a conexão-autenticação de senha, autenticação pública/privada baseada em chave (usando o arquivo Autorizado_key) e autenticação baseada no host (Usando o arquivo conhecido_host).

  1. No método de autenticação baseado em senha, é necessária uma senha para fazer o login. As senhas podem ser longas e tediosas de lembrar; No entanto, pior até, eles podem ser forçados brutos (hackeados)! Scripts simples de python podem forçar o pior das senhas e, como tal, eles representam um risco de segurança.
  2. Na autenticação pública/privada baseada em chave, nenhuma senha é necessária para fazer login (um login sem senha). De fato, a autenticação baseada em chaves é mais segura que a autenticação de senha, porque não há necessidade de digitar uma senha. Em tais circunstâncias, o servidor simplesmente verifica se você tem uma chave privada! Essa chave privada é um arquivo e, portanto, pode ser copiada (risco de segurança); No entanto, é muito mais forte e mais que uma senha de 8 caracteres. Além disso, o arquivo autorizado_keys é usado para autenticar usuários pelo servidor.
  3. No método conhecido de autenticação baseado em host, o arquivo host conhecido contém os hosts que podem se conectar. O arquivo conhecido_hosts é usado para autenticar servidores pelos usuários.

Neste tutorial, estaremos analisando como configurar a autenticação pública/privada baseada em chave e dar uma olhada no arquivo Autorizado_keys e seus usos.

Configurando a autenticação baseada em chave

Ao configurar sistemas complicados como esses, precisamos garantir que os arquivos de configuração sejam configurados adequadamente! Se não forem, todo o processo não funcionará! Agora, existem dois sistemas aqui - o cliente e o servidor. O /etc/ssh/sshd_config No servidor no servidor, descompor e configure -os da seguinte forma:

Permitrootlogina sim
PasswordAuthentication Sim
ChallengerSesponseauthentication no

Em seguida, precisamos de gênero chaves públicas e privadas. Para gerar as chaves, execute (na máquina cliente):

ssh-keygen

Quando você corre ssh-keygen, você será solicitado com algumas perguntas. A primeira pergunta será o local onde você deseja salvar as chaves. Se você deixar isso em branco, ele o salvará na pasta padrão. No meu caso, esse é o/home/cliente/.ssh/id_rsa, onde id_rsa é a chave privada real, e o .ssh é a pasta. Em seguida, você será solicitado a entrar em uma senha. Você não precisa entrar em uma senha, mas isso adiciona outra camada de segurança. A senha é usada para criptografar a chave privada.

Isso criará uma chave pública e uma chave privada.

~/.ssh/id_rsa (chave privada)
~/.ssh/id_rsa.pub (chave pública)

O DOT SSH significa que é uma pasta oculta por padrão. Além disso, a chave pública é usada para criptografia, enquanto a chave privada é usada para descriptografia. E embora a chave pública possa ser bandida em todos os lugares e em qualquer lugar, a chave privada deve ser mantida em segurança! Sua chave privada deve permanecer dentro da sua rede o tempo todo! Se você perder sua chave privada, também pode assumir que seu sistema foi comprometido. É pior do que perder sua senha porque é um login sem senha).

Em seguida, precisamos copiar a chave pública para o servidor e, para isso, usamos o seguinte código (que é executado na máquina cliente):

SSH-COPY-ID

Por exemplo, no meu caso, eu escrevia:

Ex: SSH-COPY-ID [email protected]

SSH-COPY-ID é tal que nome do servidor é o nome do servidor, e IP é seu endereço IP. Nesse caso, "servidor”É o nome do meu servidor e 10.0.2.15 é seu endereço IP. Quando o código anterior for inserido na máquina cliente, o cliente solicitará a senha do servidor, insira -a. Ele copiará a chave pública para o servidor em ~/.ssh/autorizado_keys e subsequentemente exibir ”o número de chaves adicionadas:“ em sua máquina cliente.

A máquina cliente também solicitará que você tente um login usando:

ssh
(Ex: SSH [email protected])

A segunda a chave pública é copiada no servidor, um arquivo chamado Authorized_keys será criado com a chave pública dentro dele. Como você pode ver nas fotos a seguir, aqui está uma pasta escondida chamada /.SSH ganhou meu servidor; Quando o arquivo autorizado_keys é aberto, você pode ver a chave pública que geramos dentro dele.

Embora esse processo pareça bastante simples, você pode e provavelmente encontrará vários erros ao configurar o processo de autenticação baseado em chaves. Um, em particular, é o seguinte:

Erro "agente admitiu a falha em assinar usando a chave. Permissão negada. (chave pública"

Você pode receber esse erro depois de copiar a chave pública para o Arquivo Autorizado_keys. Use o seguinte código na máquina cliente para corrigi -lo:

ssh-add

Depois que tudo estiver configurado, agora você precisa desativar a autenticação de senha em sua máquina de servidor. Isso é feito entrando no /etc/ssh/sshd_config no seu servidor e definindo o PasswordAuthentication para não:

PasswordAuthentication no

Depois de definir a autenticação de senha para não, se você tentar fazer login via SSH, você deve estar logado automaticamente. (Observe que eu não defini uma senha.)

Arquivo Autorizado_keys

Independentemente do tipo de chave que você usa (Ex: RSA, Ecdsa, etc.), Para usar a autenticação baseada em chaves, a chave pública gerada deve ser copiada no servidor Arquivo Autorizado_keys. Normalmente, se esse arquivo não existir, o servidor tentará autenticação de senha. Lembre -se também de que cada chave pública é armazenada em uma única linha no Arquivo Autorizado_keys. Lembre -se também de dar o /.pasta ssh, as chaves privadas/públicas e o Arquivo Autorizado_keys As permissões apropriadas - você e você sozinho devem ser capazes de mexer com isso. Observe que você pode copiar a chave pública manualmente para o /.pasta ssh Além disso, e se feito manualmente, as permissões apropriadas são uma parte importante do processo.

No caso de você adicionar uma segunda chave pública manualmente ao Arquivo Autorizado_keys, terminar a linha com um “Newlin”Ou um retorno. Caso contrário, ele pensará que as duas chaves distintas são uma única chave, e também não funcionará.

O /.diretório ssh deve ter a seguinte permissão:

chmod 700 ~//.ssh

O Arquivo Autorizado_keys deve ter a seguinte permissão:

chmod 600 ~//.ssh/autorizado_keys

O chave pública deve ter a seguinte permissão:

chmod 644 ~//.ssh/id_rsa.bar

A chave privada deve ter a seguinte permissão:

chmod 600 ~//.ssh/id_rsa

Você também pode conceder a outros usuários acesso ao seu servidor. Para isso, você simplesmente obtém a chave pública deles e a coloca no Arquivo Autorizado_keys (em uma nova linha). Este último concederá a eles acesso ao seu servidor.

Normalmente, quando a autenticação baseada em chave é configurada, o usuário pode acessar a máquina remota com comandos totalmente funcionais. No entanto, você pode restringir o acesso a um único comando que deseja usando o Arquivo Autorizado_keys. Isso é chamado “comando forçado““.

Este é o formato do Arquivo Autorizado_keys Se você deseja forçar um comando:


Ex:
Command = ”date” ssh-rsa aasasa […]

No meu exemplo, coloquei o comando "data" em frente à chave pública no arquivo Authorized_keys (veja na figura abaixo). O resultado deste comando adicionado ao arquivo Autorizado_Keys é que eu só recebo a data na minha máquina cliente. O comando que você especificou, e somente esse comando será executado ou permitido.


A desvantagem do comando forçado no Arquivo Autorizado_keys é que você normalmente só pode colocar um comando por chave pública autorizada. Para ignorar isso, você precisará de um script de basquete. Se você estiver lidando com um script bash, você usará a seguinte notação:

comando =

Suponha que eu escreva um script chamado ssh_script.sh (Este é apenas um exemplo de script):

#!/BIN/BASH
Ps3 = 'Escolha sua opção:'
escolhas = ("Get the Date" "Faça um diretório" "faça um arquivo" "Exit")
selecione Opt em "$ escolhas [@]"; fazer
Caso $ OPT em
"Obtenha a data")
CurrentDate = 'Data +"%y-%m-%d%t"'
eco $ currentDate
;;
"Faça um diretório")
eco "Qual é o nome do diretório?"
Leia o nome de nome
Mkdir $ chamado
;;
"Faça um arquivo")
eco "Digite o texto que deseja colocar no arquivo"
Leia o texto
eco "Nome do arquivo, por favor"
Leia o nome do arquivo
eco $ text >> $ nome do arquivo
quebrar
;;
"saída")
eco "adeus! Vejo você de novo em breve!"
saída
;;
*) Echo "Opção inválida $ Responder" ;;
ESAC
feito

O próximo passo é tornar este arquivo executável digitando o seguinte:

chmod +x ssh_script.sh

Observe que, se você não fizer esse arquivo executável, o processo lançará um erro! Aqui, você colocaria o arquivo que você acabou de criar ~/.ssh como ~//.ssh/ssh_script.sh, e escreva o seguinte no Arquivo Autorizado_key:

Ex:
Command = ”/home/servidor/.ssh/ssh_script.sh ”ssh-rsa aasasa […]

O resultado é o seguinte:

Quando o ssh_script.Arquivo SH (executável) é colocado no ~/.pasta ssh (~//.ssh/ssh_script.sh), e que o Arquivo Autorizado_keys é modificado, você deve ver os resultados do script bash na máquina cliente (como na imagem acima). E é isso! Código fácil, arejado e bonito!

Autenticação baseada em chaves é uma maneira fácil, rápida e segura de fazer login na sua máquina remota usando ssh. Em particular, o Arquivo Autorizado_keys é de grande utilidade para autenticar o usuário e especificar quais comandos são permitidos pelo usuário.

Codificação feliz!