Отказано в доступе (публичный ключ, пароль, клавиатура-интерактив)

773
Technext

Я пытаюсь перейти scpс конвейера Bitbucket на Windows Server 2016. На сервере Windows установлен Win32-OpenSSH .

Вывод команды:

+ scp -v sample.conf john.doe@xx.yyy.zzz.xyz:/C:/Users/john.doe Executing: program /usr/bin/ssh host xx.yyy.zzz.xyz, user john.doe, command scp -v -d -t /C:/Users/john.doe OpenSSH_7.7p1, LibreSSL 2.7.4 debug1: Reading configuration data /home/gradle/.ssh/config debug1: Reading configuration data /etc/ssh/ssh_config debug1: Connecting to xx.yyy.zzz.xyz [xx.yyy.zzz.xyz] port 22. debug1: Connection established. debug1: key_load_public: No such file or directory debug1: identity file /home/gradle/.ssh/id_pipelines type -1 debug1: key_load_public: No such file or directory debug1: identity file /home/gradle/.ssh/id_pipelines-cert type -1 debug1: Local version string SSH-2.0-OpenSSH_7.7 debug1: Remote protocol version 2.0, remote software version OpenSSH_for_Windows_7.7 debug1: match: OpenSSH_for_Windows_7.7 pat OpenSSH* compat 0x04000000 debug1: Authenticating to xx.yyy.zzz.xyz:22 as 'john.doe' debug1: SSH2_MSG_KEXINIT sent debug1: SSH2_MSG_KEXINIT received debug1: kex: algorithm: curve25519-sha256 debug1: kex: host key algorithm: rsa-sha2-512 debug1: kex: server->client cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none debug1: kex: client->server cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none debug1: expecting SSH2_MSG_KEX_ECDH_REPLY debug1: Server host key: ssh-rsa SHA256:wkXf3e9jgd5W/QY/LwBF41XgeJIC/wLZBeavZI/xYM debug1: Host 'xx.yyy.zzz.xyz' is known and matches the RSA host key. debug1: Found key in /home/gradle/.ssh/known_hosts:3 debug1: rekey after 134217728 blocks debug1: SSH2_MSG_NEWKEYS sent debug1: expecting SSH2_MSG_NEWKEYS debug1: SSH2_MSG_NEWKEYS received debug1: rekey after 134217728 blocks debug1: SSH2_MSG_EXT_INFO received debug1: kex_input_ext_info: server-sig-algs=<ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521> debug1: SSH2_MSG_SERVICE_ACCEPT received debug1: Authentications that can continue: publickey,password,keyboard-interactive debug1: Next authentication method: publickey debug1: Trying private key: /home/gradle/.ssh/id_pipelines debug1: Authentications that can continue: publickey,password,keyboard-interactive debug1: Next authentication method: keyboard-interactive debug1: Authentications that can continue: publickey,password,keyboard-interactive debug1: Next authentication method: password debug1: read_passphrase: can't open /dev/tty: No such device or address debug1: Authentications that can continue: publickey,password,keyboard-interactive Permission denied, please try again. debug1: read_passphrase: can't open /dev/tty: No such device or address debug1: Authentications that can continue: publickey,password,keyboard-interactive Permission denied, please try again. debug1: read_passphrase: can't open /dev/tty: No such device or address debug1: Authentications that can continue: publickey,password,keyboard-interactive debug1: No more authentication methods to try. john.doe@xx.yyy.zzz.xyz: Permission denied (publickey,password,keyboard-interactive). lost connection 

Некомментированные строки в C:\ProgramData\ssh\sshd_config

Port 22 PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys PasswordAuthentication yes PermitEmptyPasswords no Subsystem sftp sftp-server.exe 

На сервере Windows открытый ключ присутствует в C:\Users\john.doe\.ssh\authorized_keys

Я просто не уверен, что не так с конфигурацией. Любая идея?

0

1 ответ на вопрос

1
Marcelo Roberto Jimenez

Может быть, это проблема с правами доступа к файлу.

В файле contrib / win32 / win32compat / w32-sshfileperm.c есть этот комментарий:

/* * The function is to check if current user is secure to access to the file.  * Check the owner of the file is one of these types: Local Administrators groups, system account, current user account * Check the users have access permission to the file don't voilate the following rules: * 1. no user other than local administrators group, system account, and pwd user have write permission on the file * 2. sshd account can only have read permission * Returns 0 on success and -1 on failure */ int check_secure_file_permission(const char *input_path, struct passwd * pw) 

Вы должны проверить правильность разрешений:

  • В homeкаталоге пользователя (C: \ Users \ john.doe)
  • В .sshкаталоге (C: \ Users \ john.doe \ .ssh)
  • И в authorized_keysфайле (C: \ Users \ john.doe \ .ssh \ authorized_keys).

Ссылка:

[1] https://askubuntu.com/questions/1078884/key-rejection-when-do-ssh

Именно это и было проблемой, и это произошло потому, что я пробовал `scp` с двумя учетными записями (мой и пользователь сборки / с). Так как я смог войти в систему удаленно, используя любую из этих учетных записей, и, поскольку у обоих есть права администратора на сервере Windows, я случайно закончил изменять мой файл authorized_keys, используя учетную запись пользователя сборки при устранении неполадок. Никогда не думал, что я бы испортил такие вещи в Windows. Теперь я понимаю, что права доступа к Windows так же важны, как и для SSH. Спасибо за вставку комментария из файла `w32-sshfileperm.c` Marcelo! Это действительно помогло. :) Technext 5 лет назад 1