Berechtigung verweigert (Veröffentlichungsschlüssel, Kennwort, interaktive Tastatur)

802
Technext

Ich versuche, scpvon Bitbucket-Pipeline zu Windows Server 2016 zu gehen. Auf dem Windows-Server ist Win32-OpenSSH installiert.

Befehlsausgabe:

+ 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 

Unkommentierte Zeilen in C:\ProgramData\ssh\sshd_config

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

Auf dem Windows-Server ist der öffentliche Schlüssel in vorhanden C:\Users\john.doe\.ssh\authorized_keys

Ich bin mir einfach nicht sicher, was mit der Konfiguration falsch ist. Irgendeine Idee?

0

1 Antwort auf die Frage

1
Marcelo Roberto Jimenez

Möglicherweise handelt es sich um ein Dateiberechtigungsproblem.

In der Datei contrib / win32 / win32compat / w32-sshfileperm.c gibt es diesen Kommentar:

/* * 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) 

Sie müssen prüfen, ob die Berechtigungen korrekt sind:

  • Im Benutzerverzeichnis home(C: \ Users \ john.doe)
  • Im .sshVerzeichnis (C: \ Users \ john.doe \ .ssh)
  • Und in der authorized_keysDatei (C: \ Users \ john.doe \ .ssh \ authorised_keys).

Referenz:

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

Das war genau das Problem und es geschah, weil ich "scp" mit zwei Konten (meinen und einem Buildbenutzer a / c) ausprobierte. Da ich mich mit einem dieser Konten aus der Ferne anmelden konnte und beide Administratorrechte auf dem Windows-Server haben, änderte ich versehentlich meine `authorized_keys'-Datei mit dem Konto des Buildbenutzers während der Fehlerbehebung. Ich hätte nie gedacht, dass ich unter Windows so etwas durcheinander gebracht hätte. Jetzt stelle ich fest, dass Berechtigungen unter Windows eine Rolle spielen, was "SSH" angeht. Vielen Dank für das Einfügen des Kommentars aus der `w32-sshfileperm.c'-Datei Marcelo! Das hat wirklich geholfen. :) Technext vor 6 Jahren 1