Encontrei um tutorial para isso pesquisando:
Isso foi discutido e resolvido originalmente pelos usuários do github imjakey, fpqc, qris, therealkenc, Manouchehri e aseering (eu) aqui:
https://github.com/Microsoft/BashOnWindows/issues/612
Observe que a execução do sshd tem implicações de segurança. Até que o modelo de segurança da WSL tenha demorado mais tempo para assar, você deve assumir que qualquer pessoa que possa ssh na sua caixa do Windows tem permissão para executar qualquer comando como usuário do Windows executando o sshd, independentemente das permissões no nível do Linux. (As permissões são provavelmente mais restritivas do que na prática, mas o modelo de segurança inicial da WSL não se destina a ser muito sofisticado.)
Tentativa de agregar as instruções do github:
- Gere chaves de host SSH executando
sudo dpkg-reconfigure
openssh-server
em um shell bash
- Corra
sudo nano /etc/ssh/sshd_config
; edite a UsePrivilegeSeparation yes
linha para ler
UsePrivilegeSeparation no
. (Isso é necessário porque
UsePrivilegeSeparation
usa o chroot()
syscall, que o WSL não suporta no momento.)
- Enquanto ainda está editando
/etc/ssh/sshd_config
, você pode optar por mudar
PasswordAuthentication no
para PasswordAuthentication yes
. Caso contrário, você precisará configurar as chaves SSH.
- Salve
/etc/ssh/sshd_config
e saia.
Execute sudo visudo
para editar o arquivo sudoers. Adicione a linha
$USER ALL = (root) NOPASSWD: /usr/sbin/sshd -D
substituindo "$ USER" pelo seu nome de usuário do Linux. Salvar e sair. Se o visudo reclamar que suas alterações são inválidas, corrija-as até que relate que são válidas; caso contrário, você pode quebrar o sudo no seu sistema!
- No lado do Windows, edite o firewall do Windows (e qualquer firewall de terceiros que você possa estar executando) para permitir o tráfego de entrada na porta 22. Como essa não é uma configuração super-segura, recomendo apenas permitir o tráfego de entrada em casa ( privadas) e redes de domínio, não da Internet pública.
Crie um arquivo de texto
autostartssh.vbs
no Windows contendo o seguinte:
set ws=wscript.createobject("wscript.shell")
ws.run "C:\Windows\System32\bash.exe -c 'sudo /usr/sbin/sshd -D'",0
- Clique duas vezes no script. Deve iniciar o sshd; você deve poder fazer o ssh na sua máquina Windows.
- Abra o Agendador de tarefas do Windows. Adicione uma tarefa que seja executada
autostartssh.vbs
na inicialização do sistema. Use wscript.exe
como o comando a ser executado e o local do script VBS como parâmetro.
E é isso - o seu computador Windows deve estar executando um servidor Linux openssh!
UsePrivilegeSeparation = yes
, exceto que também é necessário executarsudo /bin/mkdir -p /var/run/sshd
(para criar os diretórios de separação de privilégios) antes de iniciar o sshd. O WLS agora suporta chroot (), existe uma solução alternativa na fonte openssh ou a= No
configuração é mais uma recomendação de segurança? Além disso, a tarefa do Windows parece funcionar apenas para mim se meu usuário estiver logado./etc/ssh/sshd_config
que lêPort 22
e mude paraPort 8822
. Uma razão para isso é o Windows executando algum tipo de processo SSH em 22. Vi sugestões dizendo que não há problema em desativar isso, mas achei mais fácil alternar a porta SSL WSL.Eu precisava fazer a mesma coisa.
Veja como inicializar o subsistema Ubuntu Linux com todos os serviços do cron na inicialização do Windows e fornecer um meio de 'reinicializar' o subsistema Linux.
Estou hospedando com sucesso o banco de dados openssh-server, nginx & mariadb em nosso servidor.
Instalar subsistema Linux
Colar:
Instale o Ubuntu na Windows Store.
Remover prompt de senha sudo (obrigatório)
Colar:
Ativar login com senha SSH (opcional)
Colar:
Registro automático do Windows na inicialização (necessário se você tiver uma senha ou RDP)
Navegue até
Crie uma nova string
DefaultPassword
e escreva a senha do usuário como valor.Execute o loop bash / cron no início
linux.bat
noshell:startup
Colar:
Adicionar aplicativos / serviços à inicialização no cron
sudo crontab -e
Anexe aplicativos de inicialização como openssh-server, nginx, mysql, php:
Salvar e sair:, ctrlxdepois pressione ye enter.
Reinicialize o subsistema Linux sem reiniciar o Windows
Abra o bash ou SSH no
Isso fechará a instância atual e criará uma nova aplicando o cron.
Extra - Instale o PHP 7.1 (não tão direto)
Execute os comandos abaixo para obter uma configuração bastante padrão:
Execute o comando abaixo para uma configuração 'OwnCloud':
Extra - Instale o servidor da web nginx
Execute os comandos abaixo para uma configuração básica com o PHP7.1:
Extra - Instale o banco de dados mysql do mariadb
Execute os comandos abaixo para um servidor de banco de dados mysql:
Quando solicitado, defina uma senha de usuário do banco de dados raiz.
fonte
A resposta de @poma é muito boa, e é com isso que minha resposta se baseia. Eu quero adicionar algumas melhorias, no entanto:
service
vez de ligarsshd
diretamente: em'sudo service ssh start'
vez de'sudo /usr/sbin/sshd -D'
. Dessa forma, mesmo se você chamar o script várias vezes, haverá apenas no máximo umsshd
processo. Além disso, é fácil matá-lo com outro script que é executado'sudo service ssh stop'
. No arquivo sudoers, basta substituir/usr/sbin/sshd -D
por/usr/sbin/service
.sshd
diretamente, livre-se da-D
opção , porque isso colocará um processo em primeiro plano indefinidamente. Se você não acredita em mim, apenas acreditetop
e veráinit
umsudo
processo para cada vez que chamou o script. Não se esqueça de remover a-D
opção no arquivo sudoers também!autostartsshd.ps1
e colar no seguinte:bash -c 'sudo service ssh start'
. Para executar o script, clique com o botão direito do mouse e clique emRun with PowerShell
.Outra questão de estouro de pilha tem etapas semelhantes: /superuser//a/1114162/182590
Espero que ajude alguém :)
fonte
sudo service ssh start
e fechar o bash, o ssh daemon será morto. Pelo menos foi o que fez no momento em que escrevi meu guia.insira
bash -c "echo [password] | service ssh start"
o script de inicialização do Windows e use sua própria senha sudo para substituir [password]fonte
sudo
palavra-chave necessária que sua sentença implica). Isso simplesmente não funciona. Não que você deva armazenar sua senha em texto simples de qualquer maneira!As respostas @Poma e @Hintron são ótimas.
Gostaria de estender a descrição do último ponto, como adicionar a tarefa ssh no Agendador de Tarefas do Windows, pois é necessário alternar algumas opções:
É usada a chamada direta do bash. Não há necessidade de envolvê-lo em scripts vbs ou powershell.
Eu uso o comando service por razões explicadas pelo @Hintron. Além disso, a chamada sshd direta fornece erro
Nesse caso, deve ser adicionada esta entrada por
sudo visudo
comandoObserve também que aqui todos os usuários (primeira coluna) podem iniciar ou parar o sshd. Se você é apenas um usuário desta máquina Windows, tudo bem.
fonte
Crie um arquivo nomeado
wsl_setup.bat
e adicione conteúdo da seguinte maneiraAdicionar
wsl_setup.bat
arquivo à pasta de inicialização do Windows windows-10-change-startup-appsReinicie e faça login na sua conta do Windows (sim, você precisa fazer login)
fonte