Configurando chaves SSH no servidor Windows 10 OpenSSH

4

Eu configurei o OpenSSH em vários tipos de Linux várias vezes. Mas eu não posso fazê-lo funcionar corretamente no Windows.

Parece haver dois lados da questão. As permissões e a chave usada por sshd/ ssh-agent.

Permissões

Cada página que eu li tem uma resposta diferente para as permissões corretas. Alguns trabalhos, e às vezes o programa reclama deles.

Pelo que entendi, todas as chaves devem pertencer SYSTEM, com acesso de leitura NT SERVICE\sshde Controle total para Administratorse SYSTEM? (Como eu entendo SYSTEMe Administratorsrepresento raiz no Windows). Eu li na documentação que o acesso de leitura é necessário apenas se não estiver usando ssh-add/ ssh-agent. Também configurei as mesmas permissões para o %USERPROFILE%/.ssh/authorized_keysarquivo e adicionei a .pubchave Ed25519, que é a que estou usando para tentar conectar, embora também tenha tentado com minha própria chave RSA gerada.

Com as permissões definidas dessa maneira, o programa não reclama ao adicionar chaves ao agente ou executar o daemon. A única opção em que mudei sshd_configé a ListenAddressque estava vinculando a 0.0.0.0, defino-a no IP local da máquina, pois o SSH será usado apenas localmente.

Chaves

Quando executo sshd.exea -dopção, percebo que ele importa as 4 chaves padrão do %PROGRAMDATA%/ssh. Quando adicionei a ed25519.pubchave authorized_keys, foi seguido por HOSTNAME@workstation@HOSTNAME, HOSTNAMEsendo o nome do host do meu PC. Normalmente eu esperava ver user@host. Tentei criar minha própria chave e adicioná-la, mas quando executo, sshd.exe -dela parece nunca usar nada além das chaves padrão.

No final, não consigo me conectar ao servidor OpenSSH, e os logs %PROGRAMDATA%/ssh/Logsparecem mostrar apenas o início do servidor. Para resumir minhas perguntas: Quais são as permissões corretas para os arquivos de chave e authorized_hosts? A anotação de authorized_keysestar errado faz diferença? Devo ser a adição de todas as teclas padrão .pub's em authorized_hosts? E por último, o que sshdsignifica quando menciona essas chaves durante a inicialização (consulte o log)? Minha chave gerada não deveria funcionar apenas enquanto eu a adicionasse authorized_hosts?

debug1: sshd version OpenSSH_for_Windows_7.6, LibreSSL 2.6.4
debug1: private host key #0: ssh-rsa SHA256:and12LVkEqyXJ2gr0SxFEQObaSFF+Czlcnx2uFjZaJQ
debug1: private host key #1: ssh-dss SHA256:waeLdy4Sm3NT+zbwEMIhbfl8TLe6WeQ0MuZE07CzFQU
debug1: private host key #2: ecdsa-sha2-nistp256 SHA256:G8/7y/04cSE3EezTrcmpK4lRmJ5f5I/CDPcHaPzsv4o
debug1: private host key #3: ssh-ed25519 SHA256:Jvn9UjsbdzH54L/yvGYGfCzJQVIMiIWL5RETbaL2ACA
debug1: rexec_argv[0]='C:\\WINDOWS\\System32\\OpenSSH\\sshd.exe'
debug1: rexec_argv[1]='-d'
debug1: Bind to port 22 on 192.168.1.144.
Server listening on 192.168.1.144 port 22.
shenk
fonte

Respostas:

6

Você parece combinar as chaves dos hosts do servidor e as chaves públicas da sua conta .


As chaves do host do servidor são geradas pelo Win32-OpenSSH em %PROGRAMDATA%/sshsua primeira inicialização. Eles também recebem permissões corretas, sem necessidade de modificá-las. Essas são as chaves que você vê carregadas como "chave de host privada" em seu log. Isso também indica que eles têm as permissões corretas (caso contrário, eles não serão carregados).


As chaves públicas da sua conta vão para %USERPROFILE%/.ssh/authorized_keys. Esse arquivo deve ter acesso de gravação apenas à conta à qual eles pertencem.

O authorized_keysarquivo deve conter parte da chave pública do par de chaves da sua conta . Isso não tem nenhuma relação com .pubarquivos de %PROGRAMDATA%/ssh.

Um comentário no authorized_keysarquivo não importa.

As chaves do authorized_keysarquivo não são carregadas quando o servidor é iniciado. Eles são carregados apenas quando você tenta fazer login.

Veja também meus guias para:

Martin Prikryl
fonte