Копирование ключа ssh с компьютера с Windows на сервер Windows 2019

Я пытался получить доступ к Windows Server 2019 без пароля через протокол OpenSSH. Итак, я создал новый ключ, который мне нужно скопировать на сервер Windows, я пробовал это:

ssh-copy-id -i ~/.ssh/id_rsa user@server

Но я получаю это после ввода правильного пароля:

'exec' is not recognized as an internal or external command,
operable program or batch file.
The system cannot find the path specified.
The system cannot find the path specified.

Моя проблема заключается в том, как перенести ключ с одного компьютера с Windows (используя gitbash, WSL, powershell или что-то еще) в расположение авторизованных ключей Windows Server 2019, если я не ошибаюсь.

Я в отчаянии, чтобы сделать это вручную, но местонахождение этих ключей для меня загадка, нужно ли мне сначала установить что-то на Windows Server, чтобы он мог принимать ключи для аутентификации?

Какова альтернатива ssh-copy-id с компьютера с Windows на Windows Server 2019?

Найденное решение: Следуйте этому полезному руководству YouTube, реквизиты для https://www.youtube.com/watch?v=Cs3wBl_mMH0&ab_channel=IT%2FOpsTalk-Deprecated-SeeChannelDescription

Кроме того, установка OpenSSHUtils работала с:

Install-Module -Name OpenSSHUtils -RequiredVersion 0.0.2.0 -Scope AllUsers

Также помогло это руководство:

https://www.cloudsma.com/2018/03/installing-powershell-modules-on/

У моего сервера не было доступа, поэтому я вручную скопировал файл из: C:\Program Files\WindowsPowerShell\Modules на сервер: Server:\Program Files\WindowsPowerShell\Modules


person whatismyname123    schedule 10.01.2021    source источник


Ответы (2)


Во-первых, за этим сообщением об ошибке следует microsoft/vscode-remote-release проблема 25.

Текущий обходной путь (контекст VSCode, но его следует применять и для обычного SSH-соединения):

Кроме того, для всех, кто любит свои bash на окнах, но все еще хочет иметь возможность использовать удаленный VSCode, обходной путь, который я сейчас настроил, — это использовать autorun.cmd, развернутый на серверах, который определяет, когда приходит SSH-соединение, и имеет терминал выделен:

@echo off

if defined SSH_CLIENT (
    :: check if we've got a terminal hooked up; if not, don't run bash.exe
    C:\cygwin\bin\bash.exe -c "if [ -t 1 ]; then exit 1; fi"
    if errorlevel 1 (
        C:\cygwin\bin\bash.exe --login
        exit
    )
)

Известно, что это работает с Cygwin bash, не уверенным в bash, который поставляется с окнами; Я предполагаю, что это очень чувствительно к тому, как код TTY работает внутри.
Таким образом, запуск cmd.exe работает нормально, использование VSCode (поскольку он не выделяет PTY) работает нормально, но подключение SSH к машине запускает bash.exe .

Я подозреваю, что это также будет работать с использованием bash.exe, который поставляется с Git для Windows, должен ли он быть установлен на целевом сервере.

Целевой файл должен находиться на сервере:

%USERPROFILE%\.ssh\authorized_keys

Если вы можете сделать это вручную, просто попробуйте scp вместо использования ssh-copy-id

scp user@server:C:/Users/<user>/.ssh/authorized_key authorized_key 
# manual and local edit to add the public key
scp authorized_key  user@server:C:/Users/<user>/.ssh/authorized_key

(опять же, я бы использовал scp.exe, поставляемый с Git для Windows, на этот раз установленный локально)

person VonC    schedule 11.01.2021

Найденное решение: Следуйте этому полезному руководству YouTube, реквизиты для https://www.youtube.com/watch?v=Cs3wBl_mMH0&ab_channel=IT%2FOpsTalk-Deprecated-SeeChannelDescription

Кроме того, установка OpenSSHUtils работала с:

Install-Module -Name OpenSSHUtils -RequiredVersion 0.0.2.0 -Scope AllUsers

Также помогло это руководство:

https://www.cloudsma.com/2018/03/installing-powershell-modules-on/

У моего сервера не было доступа, поэтому я вручную скопировал файл из: C:\Program Files\WindowsPowerShell\Modules на сервер: Server:\Program Files\WindowsPowerShell\Modules

person whatismyname123    schedule 11.01.2021