Configurar o OpenSSH para as janelas com a autenticação de chaves públicas
estou a ter problemas a configurar o OpenSSH para o Windows, usando a autenticação de chave pública.
tenho isto a funcionar no meu ambiente de trabalho local e posso ssh com uma chave de máquinas Unix ou outro OpenSSH para máquinas Windows.
replicei a compilação num servidor, consigo que a autenticação da senha funcione bem, mas quando uso as chaves, obtenho o seguinte problema:
debug1: Authentications that can continue: publickey,password,keyboard-interactive
debug3: start over, passed a different list publickey,password,keyboard-interactive
debug3: preferred publickey,keyboard-interactive,password
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /cygdrive/c/sshusers/jsadmint2232/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
Connection closed by 127.0.0.1
Por isso, para efeitos de teste, tenho estado a tentar localizar o SSH, mas mesmo quando tentado remotamente tenho o mesmo problema.
ainda mais estranho, é que quando eu tenho tanto senha e chave pública ativada em sshd_config
, ele só vai tentar usar chaves e, em seguida, bombardear com a mensagem acima e nem sequer tentar usar senha.
Aqui estão os passos que eu dei:
- instalar o OpenSSH para o Windows
- mkgroup - l>..\etc\group (grupos locais adicionados)
- mkgroup-d >..\etc\group (grupos de domínio adicionados)
- mkpasswd-L-u openssh >..\senha (adicionado o meu utilizador local)
- mkpasswd-D-u js admint2232 >..\passwd (adicionou o meu utilizador do domínio)
- Edited the homedir in passwd to point to point to c:\sshusers\%USER% - em que %Utilizador % é o nome de utilizador
- activa a autenticação da senha, a autenticação da chave desactivada
- criou as teclas ssh tanto para o JS administnt2232 / openssh como assegurou que os ficheiros fossem criados em homedirs
- adicionou os ficheiros autorized_ Keys .pastas de ssh para cada utilizador e chaves adicionadas para os utilizadores de ligação recebidos
- líquido parar opensshd / net start opensshd
- a senha de teste auth funciona tanto localmente como remotamente
- O sshd_ Config actualizado, para activar a tecla auth-reiniciar o opensshd
- testar a ligação e ficar acima do erro, também nem sequer tenta a senha auth?
- actualizado o sshd_ config, para desactivar a autenticação da senha completamente-reiniciar o opensshd
- testar a ligação e ainda ficar acima do erro
4 answers
A seguir estão os passos de configuração para o OpenSSH enviado com o Windows 10 v. 1803 (actualização de abril de 2018).
Configuração do servidor (powershell elevada):
Instalar o servidor OpenSSH:
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
.Iniciar os Serviços de agente e sshd:
Start-Service ssh-agent; Start-Service sshd
(Isto irá gerar as chaves da máquina e a configuração predefinida automaticamente em$env:ProgramData\ssh
).[opcional] instalar o módulo powershell do OpenSSHUtils:
Install-Module -Force OpenSSHUtils
Configuração do cliente (não elevada powershell):
Gerar a chave do utilizador:
cd $env:USERPROFILE\.ssh; ssh-keygen.exe
, seguir as instruções, concordar com a localização por omissão sugerida do ficheiro. Isto irá criar 2 arquivos:id_rsa
eid_rsa.pub
;[opcional] adicionar a chave ao agente de autenticação, para que não tenha de indicar a senha de cada vez que a usar:
ssh-add .\id_rsa
(ou seja qual for o ficheiro gerado);
A configuração do servidor continuou (powershell não-elevada):
- faça login como utilizador, para o qual a chave pública deve ser
-
cd $env:USERPROFILE; mkdir .ssh; cd .ssh; New-Item authorized_keys
; - colar o conteúdo do ficheiro
id_rsa.pub
do cliente para o ficheiro.ssh\authorized_keys
do passo anterior. - configurar as permissões correctamente (importante!!!):
- executar
start .
para abrir o explorer com a pasta actual ($env:USERPROFILE\.ssh
); - clique com o botão direito
authorized_keys
, vá paraProperties -> Security -> Advanced
- Carregue em "Desactivar a herança";
- escolha "Converter permissões herdadas em permissões explícitas neste objecto"quando for solicitado; (Muito, muito importante) Remove todas as permissões do ficheiro, excepto para o
SYSTEM
e para si próprio. Deve haver exatamente duas entradas de permissão no arquivo. Algumas guias sugerem que a execução doRepair-AuthorizedKeyPermission $env:USERPROFILE\.ssh\authorized_keys
- isto irá tentar adicionar o utilizadorsshd
à lista de permissões e que irá quebrar a autenticação, por isso, não faça isso, ou pelo menos não concorde em adicionar o utilizadorsshd
). Tanto oSYSTEM
como o Senhor devem ter controlo total sobre o ficheiro. - executar
Cliente:
- corre
ssh <serverusername>@<serverhostname>
Deveria trabalha nesta altura.
Tentei isso com o Windows 10 como servidor e tanto ele como um Debian Linux como cliente.
Está relacionado com a conta que iniciou o serviço - o seu estava a usar a conta do sistema Local - isto estava a impedi-lo de aceder à chave do pub e ao ficheiro autorized_keys.
Uma vez que parei o serviço e comecei como o utilizador em que estava a tentar ligar-me, funcionou!Então, basicamente, você precisa começar com uma conta de serviço e, em seguida, os usuários externos se conectam como esse usuário.
Se estiver a utilizar mls-software.com a versão do OpenSSH aqui é outra nota.
Se instalar usando a conta SSHD_SERVER e a separação de privilégios, será capaz de usar a autenticação de chave pública (por http://www.mls-software.com/opensshd-pki.html ). Contudo, se o UAC estiver activo, não terá sucesso com a instalação. O(s) Usuário (s) não será criado corretamente e o serviço não será criado. Manualmente tentando colocar estes itens para cima após o fato é muito dificil. Simplesmente desativar o UAC antes da instalação permitirá que o processo de instalação crie corretamente o(s) Usuário (s) e o serviço. Após a instalação, você pode reiniciar a UAC.
Quando criei a conta SSHD_SERVER a autenticação manual tem sucesso ao usar a autenticação por senha, mas o cliente termina a ligação com "/bin/bash: operação não permitida". A autenticação com chaves públicas foi fechada pelo servidor (erro original postado por Cambolie).
- Instalar no modo de separação de privilégios do SSHD_SERVER+. Eu também estabeleci separação de privilégios para" SIM " na configuração manualmente. Isto não funcionou para mim por muito tempo, o Usuário não foi criado. Então funcionou, não sei porquê. Só fui às contas de utilizador do painel de controlo para verificar se a UAC está desligada. Eu também tinha /var / vazio com acesso total para todos.
- para C:\openssh\var\empty eu defini permissões de" atributos obter/definir " para todos e para mim e permissões "completas" para .\sshd_server. Também o fiz ser o dono.