Existem 6 maneiras principais de acessar um servidor usando ssh que fornecem algum nível de segurança:
- usando uma combinação de usuário / senha (teclado interativo)
- usando uma identidade ssh (protegida com uma frase secreta ou não)
- usando a autenticação baseada em host
- usando certificados ssh
- Kerberos
- PAM
O seguinte pode ser de interesse:
Arquivos de identidade
Para gerar um par de arquivos de identificação ssh, use o programa ssh-key-gen para gerar um par de chaves privada (geralmente ~/.ssh/id_rsa
) e pública (geralmente ~/.ssh/id_rsa.pub
). Coloque a chave pública em um arquivo de modo 0600 chamado ~ / .ssh / authorized_keys na casa do usuário de login. Se você não usou uma frase secreta para sua chave privada, você deve conseguir fazer o login sem usar uma senha. No entanto, é mais sensato proteger sua chave privada com uma frase secreta. Pode-se evitar ter que redigitar esta frase em cada conexão, executando um processo ssh-agent e carregando a chave e a senha necessária para isso. Muitas pessoas geram um processo ssh-agent ao iniciar sua sessão X.
Você pode fazer algo nas seguintes linhas se precisar de um agente ssh:
eval 'ssh-agent -s'
ssh-add [optional ssh private file if not ~/.ssh/id_rsa]
<enter passphrase>
O arquivo authorized_keys
pode conter muitas chaves diferentes. Eles também podem receber controles especiais de acesso através do uso de frases de controle no início da linha de cada tecla no arquivo. Por exemplo, from="192.168.1.*
no início do registro de uma chave limitará a chave para uso pelos hosts que se conectam a partir dos endereços 192.168.1.x.
Autenticação baseada em host
Autenticado com base em host permite acesso usando o nome do host remoto e o nome de usuário associados a ele. Isso usa a chave ssh do host do cliente para permitir acesso, junto com a verificação do host do cliente que acessa o host remoto. Esta é uma forma fraca de segurança e provavelmente não deve ser usada, ou se estiver em uso, deve ser usada apenas em uma LAN.
Certificados
Os certificados oferecem muitas opções interessantes que, embora sejam semelhantes à organização das chaves de identidade e authorized_keys, inverte a organização para que os controles que normalmente estão no arquivo authorized_keys estejam incorporados no certificado. Deseja dar a alguém a chance de executar date
em seu servidor pelos próximos dois dias apenas como usuário bob da rede x? Os certificados parecem ser uma ótima maneira de fazer isso.
De man ssh-keygen
:
ssh-keygen supports signing of keys to produce certificates that may be used for user or host authentication. Certificates consist of a public key, some identity
information, zero or more principal (user or host) names and an optional set of constraints that are signed by a Certification Authority (CA) key. Clients or
servers may then trust only the CA key and verify its signature on a certificate rather than trusting many user/host keys. Note that OpenSSH certificates are a
different, and much simpler, format to the X.509 certificates used in ssl(8).