AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / computer / Perguntas / 1629123
Accepted
NotTheDr01ds
NotTheDr01ds
Asked: 2021-02-26 16:19:02 +0800 CST2021-02-26 16:19:02 +0800 CST 2021-02-26 16:19:02 +0800 CST

Adicionando parâmetros ao DefaultShell no Windows OpenSSH Server (por exemplo, powershell.exe -NoLogo)

  • 772

Eu tenho o servidor Windows OpenSSH instalado e funcionando corretamente. Eu posso alterar o shell padrão que é ssh'd para usar HKLM:\SOFTWARE\OpenSSHe adicionar uma DefaultShellpropriedade conforme descrito aqui .

Então vamos ao exemplo padrão, já que ele funciona como está em praticamente todas as instalações do Windows com o C:\Windowscaminho "normal":

New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String -Force

Agora digamos que eu queira adicionar um parâmetro a ele, talvez "-NoLogo". Este é apenas um exemplo. Em última análise, eu gostaria de poder lançar em uma distribuição WSL com opções. Mas, por enquanto, vamos simples:

New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoLogo" -PropertyType String -Force

Isso não apenas não funciona, como também interrompe o login de maneiras estranhas. Com o primeiro método (sem argumentos), minha chave pública no ssh-agent é oferecida e aceita. Quando adiciono o -NoLogo, acabo em um prompt de senha, que falha ao usar minha senha do Windows.

Espetáculos de corrida sshd.exe -ddd:

User not allowed because shell c:\\windows\\system32\\windowspowershell\\v1.0\\powershell.exe -nologo does not exist

Ok, então isso não vai funcionar, porque o OpenSSH verifica se a DefaultShellstring exata é um executável.

Vejo que existem duas outras configurações de registro, mas nenhuma parece ser o que estou procurando . Pode-se pensar em seu nome que DefaultShellCommandOptionseria útil aqui, mas é simplesmente a opção necessária para o shell quando um comando é passado, como:

ssh hostname ls

Como uma das tentativas de resposta aqui pensei DefaultShellCommandOptionque faria o truque, eu tentei e confirmei que ela só é usada quando um comando é passado. Também posso ver na fonte OpenSSH que shell_option é usado apenas quando há um comando , caso contrário, ele só executa o shell sozinho:

if (command) {
    size_t len = strlen(shell) + 1 + strlen(shell_option) + 1 + strlen(command) + 1;
    pty_cmd = calloc(1, len);

    strcpy_s(pty_cmd, len, shell);
    strcat_s(pty_cmd, len, " ");
    strcat_s(pty_cmd, len, shell_option);
    strcat_s(pty_cmd, len, " ");
    strcat_s(pty_cmd, len, command);
} else {
    pty_cmd = shell;
}

Alguém está ciente de uma maneira de adicionar parâmetros/argumentos ao DefaultShellWindows OpenSSH?

ssh windows
  • 1 1 respostas
  • 852 Views

1 respostas

  • Voted
  1. Best Answer
    NotTheDr01ds
    2021-02-27T15:51:13+08:002021-02-27T15:51:13+08:00

    Solução alternativa potencial

    Depois que percebi que o OpenSSH estava verificando se DefaultShellexistia e era executável, decidi apenas tentar criar um arquivo em lote envolvendo as opções do PowerShell.

    Criei um diretório e um arquivo C:\ProgramData\OpenSSH\ssh-shell.bat:

    @echo off
    C:\Windows\System32\WindowsPowerShell/v1.0/powershell.exe -NoLogo %*
    

    E mudei meu DefaultShellpara executar esse wrapper (de um PowerShell elevado):

    New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\ProgramData\OpenSSH\ssh-shell.bat" -PropertyType String -Force
    

    Isso parece funcionar como desejado, tanto para acesso ao próprio shell quanto ao executar com um comando (por exemplo ssh hostname ls, ).

    Também é possível iniciar diretamente em uma distribuição WSL especificada desta forma:

    @echo off
    C:\Windows\System32\wsl.exe ~ -d Alpine %*
    

    Observe que isso requer que o DefaultShellCommandOptiontambém seja alterado:

    New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShellCommandOption -Value "-e /bin/sh -c" -PropertyType String -Force
    

    Implicações de segurança

    Parece que é tão seguro quanto o DefaultShellcomportamento padrão do OpenSSH, pois ele cria a linha de comando usando o shell real (mais meus argumentos adicionais desejados), o DefaultShellCommandOption( -cpor padrão) e os comandos que são passados.

    Mas estou aberto a sugestões sobre como isso pode ser mais robusto ou seguro, ou se há algum problema de segurança que alguém possa ver.

    • 6

relate perguntas

  • Exigir autenticação LDAP *e* autenticação ssh

  • Comunique-se com o daemon do Docker no Windows

  • Carregar chave “ec256.pem”: formato inválido é lançado ao tentar gerar chave pública a partir de chave privada

  • atalho do shell da área de trabalho no painel lateral do explorer

  • Por que chown 600 id_rsa corrige problemas de permissões?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como posso reduzir o consumo do processo `vmmem`?

    • 11 respostas
  • Marko Smith

    Baixar vídeo do Microsoft Stream

    • 4 respostas
  • Marko Smith

    O Google Chrome DevTools falhou ao analisar o SourceMap: chrome-extension

    • 6 respostas
  • Marko Smith

    O visualizador de fotos do Windows não pode ser executado porque não há memória suficiente?

    • 5 respostas
  • Marko Smith

    Como faço para ativar o WindowsXP agora que o suporte acabou?

    • 6 respostas
  • Marko Smith

    Área de trabalho remota congelando intermitentemente

    • 7 respostas
  • Marko Smith

    O que significa ter uma máscara de sub-rede /32?

    • 6 respostas
  • Marko Smith

    Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows?

    • 1 respostas
  • Marko Smith

    O VirtualBox falha ao iniciar com VERR_NEM_VM_CREATE_FAILED

    • 8 respostas
  • Marko Smith

    Os aplicativos não aparecem nas configurações de privacidade da câmera e do microfone no MacBook

    • 5 respostas
  • Martin Hope
    Saaru Lindestøkke Por que os arquivos tar.xz são 15x menores ao usar a biblioteca tar do Python em comparação com o tar do macOS? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh Como posso reduzir o consumo do processo `vmmem`? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Pesquisa do Windows 10 não está carregando, mostrando janela em branco 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    v15 Por que uma conexão de Internet gigabit/s via cabo (coaxial) não oferece velocidades simétricas como fibra? 2020-01-25 08:53:31 +0800 CST
  • Martin Hope
    andre_ss6 Área de trabalho remota congelando intermitentemente 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney Por que colocar um ponto após o URL remove as informações de login? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca Todos os meus complementos do Firefox foram desativados repentinamente, como posso reativá-los? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK É possível criar um código QR usando texto? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 Altere o nome da ramificação padrão do git init 2019-04-01 06:16:56 +0800 CST

Hot tag

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve