Configure e verifique o SFTP com autenticação de chaves públicas em clientes e servidores
ambiente
- Windows
-
- Windows 10 Pro
- Windows Server 2019
- Windows 7
- Windows Server 2012 R2
- OpenSSH
-
- 7.7p1
- 8.1p1 - Beta
◗ Funciona em outras versões, mas não é confirmado
Inicialmente
Da última vez, você configurou um servidor SFTP para verificar que a autenticação de senha permite enviar e receber arquivos. Desta vez, o SFTP envia e recebe arquivos usando autenticação de chave pública.
Preparação com antecedência
- O cliente tem um cliente OpenSSH instalado
- O servidor tem um servidor OpenSSH instalado.
- O servidor inicia o serviço OpenSSH e a porta 22 é liberada.
Criar chaves públicas e privadas no cliente
Faça login no cliente. Chaves privadas e públicas também podem ser criadas no lado do servidor, mas a chave privada será o cliente e a chave pública será mantida pelo servidor. Crie no lado do cliente.
Inicie o PowerShell com os direitos do administrador.
Crie um arquivo, vá para qualquer pasta com o comando cd e digite o seguinte comando:
ssh-keygen -t rsa -f id_rsa
Você pode colocar uma senha (senha) na tecla, então, por favor, coloque-a se necessário.
Se a chave for gerada com sucesso, as chaves públicas e privadas ão criadas na pasta da seguinte forma: "id_rsa" é a chave privada e "id_rsa.pub" é a chave pública.
Coloque uma chave pública no servidor
Faça login no Windows com sua conta SFTP para o servidor.
Por favor, coloque a chave pública criada "id_rsa.pub" na seguinte pasta no servidor. 「. se você não tiver uma pasta "ssh", por favor, crie uma. Além disso, altere o nome do arquivo para "authorized_keys". (Substitua o <> pelo nome de usuário que você faz login com SFTP.)
- C:\User\< nome de usuário>\.ssh
Observe que apenas usuários com "administradores" ou usuários de SFTP devem ter acesso a este arquivo. As conexões Sftp sempre falham se outros usuários tiverem acesso. Por exemplo, o NG tem um grupo de usuários ou todos anexados à permissão.
Neste exemplo", Os direitos de acesso da pasta "ssh" são "Grupo:SISTEMA", "Grupo: Administradores" e "Usuário: sftptest". Se você não puder remover uma permissão, desabilita a herança de permissão.
Habilite a autenticação de chaves públicas no servidor
Faça login no servidor com os usuários de permissões de administradores e, em seguida, abra as seguintes pastas:
- C:\ProgramData\ssh
Como existe um arquivo chamado "sshd_config", copie-o e altere o nome do arquivo para "sshd_config_default" e configure um backup.
Abra "sshd_config" no editor de texto lançado com privilégios de administrador.
Para ativar a autenticação de chaves públicas, altere-a da seguinte forma:
#PubkeyAuthentication yes
↓↓↓
PubkeyAuthentication yes
Além disso, a autenticação de senha é ativada por padrão, então se você quiser desabilitá-la, altere-a da seguinte forma.
#PasswordAuthentication yes
↓↓↓
PasswordAuthentication no
Quero colocar uma chave pública para cada conta SFTP, então vou comentar a seguinte linha:
Match Group administrators
AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
↓↓↓
#Match Group administrators
# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
Se você quiser especificar o diretório raiz de cada conta SFTP, adicione a seguinte linha: Dependendo se você especificar isso ou não, quando você especificar um caminho de pasta do cliente, ele pode mudar para o formato "C:\xxxxx" ou "/xxxxx".
Match User <ユーザー名>
ChrootDirectory <フォルダパス>
exemplo
Match User TestUser
ChrootDirectory C:\Users\TestUser
Depois de salvar sshd_config, reinicie o servidor OpenSSH.
Enviar e receber arquivos de clientes com autenticação de chaves públicas
Coloque a tecla privada "id_rsa" que você criou antes de se conectar com o SFTP em uma pasta acessível apenas ao usuário que está executando o SFTP. Observe que as conexões sftp falharão se colocadas em uma pasta que pode ser acessada por outros usuários. Especialmente se a pasta tiver permissões para os grupos Usuários e Todos, é NG.
Basicamente, é recomendado porque ele se referirá automaticamente ao caminho se você colocá-lo na pasta a seguir.
- C:\User\< nome de usuário>\.ssh
O cliente é ". Os direitos de acesso da pasta "ssh" são "Group:SYSTEM", "Group: Administrators", "User: < Login usuário >".
Se você quiser acessar o SFTP usando a tecla privada, digite o comando da seguinte forma (substitua o <>): Se você configurar uma senha, digite uma senha também.
sftp -i id_rsa <ユーザー名>@<サーバー名>
Se você fizer login com sucesso, você será alterado para a exibição do usuário de login.
Você também pode verificar se você pode fazer login com o comando dir.
Agora que você preparou um arquivo chamado "test3.txt", envie o arquivo com o comando put.
put c:\temp\test3.txt
Se você olhar para a pasta C:\Users\sftptest do lado do servidor, você poderá ver que o arquivo .txt teste3 está sendo enviado.
Tente falar com o cliente.
get test3.txt c:\temp\test4.txt
Pude confirmar que o arquivo foi capaz de ser obtido.
Resumo
Você foi capaz de enviar e receber arquivos pelo SFTP usando autenticação de chave pública. Usando uma chave pública, o lado do servidor não poderá saber a senha. Ele permite que você troque arquivos com mais segurança do que a autenticação de senha.