Configure e verifique o SFTP com autenticação de chaves públicas em clientes e servidores

Data de criação de página :

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.

image

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.

image

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.

image

image

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

image

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.

image

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.

image

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 <ユーザー名>@<サーバー名>

image

Se você fizer login com sucesso, você será alterado para a exibição do usuário de login.

image

Você também pode verificar se você pode fazer login com o comando dir.

image

Agora que você preparou um arquivo chamado "test3.txt", envie o arquivo com o comando put.

put c:\temp\test3.txt

image

Se você olhar para a pasta C:\Users\sftptest do lado do servidor, você poderá ver que o arquivo .txt teste3 está sendo enviado.

image

Tente falar com o cliente.

get test3.txt c:\temp\test4.txt

image

Pude confirmar que o arquivo foi capaz de ser obtido.

image

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.