Por padrão, o ssh pesquisa por arquivos id_dsa
e id_rsa
. As chaves não precisam ser nomeadas assim, você pode nomear mykey
da mesma forma, ou até colocá-las em um diretório diferente. No entanto, se você fizer qualquer um desses, precisará referenciar explicitamente a chave no comando ssh da seguinte forma:
ssh user@server -i /path/to/mykey
Se um comando não aceitar -i
, por ex. sshfs
, use a opção IdentityFile
:
sshfs -o IdentityFile=/path/to/mykey user@host:/path/on/remote /mountpoint
Como funciona
Ao gerar uma chave, você obterá dois arquivos: id_rsa
(chave privada) e id_rsa.pub
(chave pública). Como seus nomes sugerem, a chave privada deve ser mantida em segredo e a chave pública pode ser publicada ao público.
A autenticação de chave pública funciona com uma chave pública e privada. Tanto o cliente quanto o servidor possuem suas próprias chaves. Ao instalar openssh-server
, as chaves pública e privada do servidor são geradas automaticamente. Para o cliente, você terá que fazer isso sozinho.
Quando você (cliente) se conecta a um servidor, as chaves públicas são trocadas. Você receberá os servidores um e o seu servidor. Na primeira vez que você receber a chave pública do servidor, você será solicitado a aceitá-la. Se esta chave pública mudar ao longo do tempo, você será avisado porque um possível ataque MITM (Man in the middle) está em andamento, interceptando o tráfego entre o cliente e o servidor.
O servidor verifica se você tem permissão para se conectar (definido em /etc/ssh/sshd_config
) e se sua chave pública está listada no arquivo ~/.ssh/authorized_keys
. Possíveis razões pelas quais a chave pública é negada:
-
%código%:
-
/etc/ssh/sshd_config
ouAllowUsers
é especificado, mas o usuário do servidor não está listado na lista de grupos ou usuários (o padrão não está definido, não impõe restrições a usuários ou grupos de efetuar login). -
AllowGroups
ouDenyUsers
está especificado e você está na lista de usuários ou grupos. - Você está tentando fazer o login como root, mas
DenyGroups
está definido comoPermitRootLogin
(padrãoNo
). -
yes
está definido comoPubkeyAuthentication
(padrãoNo
). -
yes
está definido para um local diferente e as chaves públicas não são adicionadas ao arquivo (padrãoAuthorizedKeysFile
, relativo ao diretório inicial)
-
-
.ssh/authorized_keys
: sua chave pública não é adicionada neste arquivo (note que este arquivo é lido como usuário root)
Usando várias chaves
Não é incomum usar várias chaves. Em vez de executar ~/.ssh/authorized_keys
, você pode usar um arquivo de configuração, ssh user@host -i /path/to/identity_file
.
Configurações comuns são o IdentityFile (as chaves) e a porta. A próxima configuração verificará "id_dsa" e "bender" somente ao se conectar com ~/.ssh/config
:
Host yourhost
IdentityFile ~/.ssh/id_dsa
IdentityFile ~/.ssh/bender
Se você omitir ssh youruser@yourhost
, as configurações serão aplicadas a todas as conexões SSH. Outras opções também podem ser especificadas para essa correspondência de host, como Host yourhost
, User youruser
, etc. Isso permitiria que você se conectasse com a abreviação Port 2222
em vez de ssh yourhost
.