Windows SSH in CentOS mit privatem Schlüssel - Funktioniert nicht

Windows SSH in CentOS mit privatem Schlüssel - Funktioniert nicht

Ich verwende Windows 10. Muss mich per SSH mit einem Linux CentOS-Server verbinden. Ich versuche sowohl Putty als auch Windows SSH (unter „Funktionen“ aktiviert... Powershell?).

Mit PuttyGen habe ich ein privates und ein öffentliches RSA-Schlüsselpaar generiert - rsa & rsa.pub, ohne Passphrase. Beide Dateien befinden sich auf meinem Desktop. server333 hat einen Eintrag in C:\Users\johndoe.ssh\known_hosts. In diesem .ssh-Verzeichnis auf meinem Windows-PC befinden sich keine anderen Dateien oder Verzeichnisse. Der öffentliche Schlüssel wird auch in /home/johndoe/.ssh/authorized_keys der Linux-Box kopiert.

Ich habe es versucht ssh -i rsa -vvv server333, aber es funktioniert nicht. Hier ist das Protokoll:

c:\Users\johndoe\Desktop>ssh -i rsa -vvv server333
OpenSSH_for_Windows_7.7p1, LibreSSL 2.6.5
debug3: Failed to open file:C:/Users/johndoe/.ssh/config error:2
debug3: Failed to open file:C:/ProgramData/ssh/ssh_config error:2
debug2: resolving "server333" port 22
debug2: ssh_connect_direct: needpriv 0
debug1: Connecting to server333 [1.2.3.4] port 22.
debug1: Connection established.
key_load_public: invalid format
debug1: identity file rsa type -1
debug3: Failed to open file:c:/Users/johndoe/Desktop/rsa-cert error:2
debug3: Failed to open file:c:/Users/johndoe/Desktop/rsa-cert.pub error:2
debug1: key_load_public: No such file or directory
debug1: identity file rsa-cert type -1
debug1: Local version string SSH-2.0-OpenSSH_for_Windows_7.7
debug1: Remote protocol version 2.0, remote software version OpenSSH_7.4
debug1: match: OpenSSH_7.4 pat OpenSSH* compat 0x04000000
debug2: fd 3 setting O_NONBLOCK
debug1: Authenticating to server333:22 as 'corp\\johndoe'
debug3: hostkeys_foreach: reading file "C:\\Users\\johndoe/.ssh/known_hosts"
debug3: record_hostkey: found key type RSA in file C:\\Users\\johndoe/.ssh/known_hosts:1
debug3: load_hostkeys: loaded 1 keys from server333
debug3: Failed to open file:C:/Users/johndoe/.ssh/known_hosts2 error:2
debug3: Failed to open file:C:/ProgramData/ssh/ssh_known_hosts error:2
debug3: Failed to open file:C:/ProgramData/ssh/ssh_known_hosts2 error:2
debug3: order_hostkeyalgs: prefer hostkeyalgs: [email protected],rsa-sha2-512,rsa-sha2-256,ssh-rsa
debug3: send packet: type 20
debug1: SSH2_MSG_KEXINIT sent
debug3: receive packet: type 20
debug1: SSH2_MSG_KEXINIT received
debug2: local client KEXINIT proposal
debug2: KEX algorithms: curve25519-sha256,[email protected],ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1,ext-info-c
debug2: host key algorithms: [email protected],rsa-sha2-512,rsa-sha2-256,ssh-rsa,[email protected],[email protected],[email protected],[email protected],ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-ed25519
debug2: ciphers ctos: [email protected],aes128-ctr,aes192-ctr,aes256-ctr,[email protected],[email protected]
debug2: ciphers stoc: [email protected],aes128-ctr,aes192-ctr,aes256-ctr,[email protected],[email protected]
debug2: MACs ctos: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-sha1
debug2: MACs stoc: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-sha1
debug2: compression ctos: none
debug2: compression stoc: none
debug2: languages ctos:
debug2: languages stoc:
debug2: first_kex_follows 0
debug2: reserved 0
debug2: peer server KEXINIT proposal
debug2: KEX algorithms: [email protected],ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group-exchange-sha256
debug2: host key algorithms: ssh-rsa,rsa-sha2-512,rsa-sha2-256
debug2: ciphers ctos: [email protected],[email protected],[email protected],aes256-ctr,aes192-ctr,aes128-ctr
debug2: ciphers stoc: [email protected],[email protected],[email protected],aes256-ctr,aes192-ctr,aes128-ctr
debug2: MACs ctos: [email protected],[email protected],[email protected],hmac-sha2-512,hmac-sha2-256,[email protected]
debug2: MACs stoc: [email protected],[email protected],[email protected],hmac-sha2-512,hmac-sha2-256,[email protected]
debug2: compression ctos: none,[email protected]
debug2: compression stoc: none,[email protected]
debug2: languages ctos:
debug2: languages stoc:
debug2: first_kex_follows 0
debug2: reserved 0
debug1: kex: algorithm: [email protected]
debug1: kex: host key algorithm: rsa-sha2-512
debug1: kex: server->client cipher: [email protected] MAC: <implicit> compression: none
debug1: kex: client->server cipher: [email protected] MAC: <implicit> compression: none
debug3: send packet: type 30
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug3: receive packet: type 31
debug1: Server host key: ssh-rsa SHA256:abcd
debug3: hostkeys_foreach: reading file "C:\\Users\\johndoe/.ssh/known_hosts"
debug3: record_hostkey: found key type RSA in file C:\\Users\\johndoe/.ssh/known_hosts:1
debug3: load_hostkeys: loaded 1 keys from server333
debug3: Failed to open file:C:/Users/johndoe/.ssh/known_hosts2 error:2
debug3: Failed to open file:C:/ProgramData/ssh/ssh_known_hosts error:2
debug3: Failed to open file:C:/ProgramData/ssh/ssh_known_hosts2 error:2
debug3: hostkeys_foreach: reading file "C:\\Users\\johndoe/.ssh/known_hosts"
debug3: record_hostkey: found key type RSA in file C:\\Users\\johndoe/.ssh/known_hosts:1
debug3: load_hostkeys: loaded 1 keys from 1.2.3.4
debug3: Failed to open file:C:/Users/johndoe/.ssh/known_hosts2 error:2
debug3: Failed to open file:C:/ProgramData/ssh/ssh_known_hosts error:2
debug3: Failed to open file:C:/ProgramData/ssh/ssh_known_hosts2 error:2
debug1: Host 'server333' is known and matches the RSA host key.
debug1: Found key in C:\\Users\\johndoe/.ssh/known_hosts:1
debug3: send packet: type 21
debug2: set_newkeys: mode 1
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug3: receive packet: type 21
debug1: SSH2_MSG_NEWKEYS received
debug2: set_newkeys: mode 0
debug1: rekey after 134217728 blocks
debug3: unable to connect to pipe \\\\.\\pipe\\openssh-ssh-agent, error: 2
debug1: pubkey_prepare: ssh_get_authentication_socket: The socket is not connected
debug2: key: rsa (0000000000000000), explicit
debug3: send packet: type 5
debug3: receive packet: type 7
debug1: SSH2_MSG_EXT_INFO received
debug1: kex_input_ext_info: server-sig-algs=<rsa-sha2-256,rsa-sha2-512>
debug3: receive packet: type 6
debug2: service_accept: ssh-userauth
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug3: send packet: type 50
debug3: receive packet: type 53
debug3: input_userauth_banner
NOTICE TO USERS
=============================================================================
This is an official computer system and is the property of
ACME, Inc. It is for authorized users only. Unauthorized users are
prohibited. Users (authorized or unauthorized) have no explicit or
implicit expectation of privacy. Any or all uses of this system may be
subject to one or more of the following actions: interception,
monitoring, recording, auditing, inspection and disclosing to security
personnel and law enforcement personnel, as well as authorized officials
of other agencies, both domestic and foreign. By using this system, the
user consents to these actions. Unauthorized or improper use of this
system may result in administrative disciplinary action and civil and
criminal penalties. By accessing this system you indicate your awareness
of and consent to these terms and conditions of use. Discontinue access
immediately if you do not agree to the conditions stated in this notice.
=============================================================================
debug3: receive packet: type 51
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug3: start over, passed a different list publickey,gssapi-keyex,gssapi-with-mic,password
debug3: preferred publickey,keyboard-interactive,password
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Trying private key: rsa
debug3: sign_and_send_pubkey: RSA SHA256:zyxw
debug3: send packet: type 50
debug2: we sent a publickey packet, wait for reply
debug3: receive packet: type 51
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug2: we did not send a packet, disable method
debug3: authmethod_lookup password
debug3: remaining preferred: ,password
debug3: authmethod_is_enabled password
debug1: Next authentication method: password
debug3: failed to open file:c:/dev/tty error:3
debug1: read_passphrase: can't open /dev/tty: No such file or directory
corp\johndoe@server333's password:

Antwort1

Anscheinend haben Sie den Benutzernamen auf dem SSH-Hostserver nicht definiert.

Sie können dies immer noch tun, aber Sie müssen die userSSH-Konfigurationsdatei wie folgt definieren:

vi ~/.ssh/config
...

Host server333
HostName your-server333-ip
User your-user
IdentityFile your-private-key

Anschließend können Sie den Server wie folgt remote verbinden:

ssh server333

Hinweis: Stellen Sie sicher, dass die Konfigurationsdatei 600die Berechtigung hat

Antwort2

Der Befehl, den SiesagteSie haben ausgeführt unterscheidet sich von dem Befehl, den SieGenau genommenrannte.

Was Sie gesagt haben, dass Sie getan haben:

ssh -i johndoe_privatekey -vvv server333

Was Sie tatsächlich getan haben:

ssh -i johndoe_privatekey.pub -vvv server333

Hier sehen wir, dass SSH sich beschwert, dass es die von Ihnen angegebene Schlüsseldatei nicht finden kann.

debug3: Failed to open file:C:/Users/johndoe/Desktop/johndoe_privatekey.pub.pub error:2
debug1: key_load_public: No such file or directory

Lassen Sie das .pubSuffix aus dem Befehl weg, stellen Sie sicher, dass die Schlüsseldateien tatsächlich vorhanden sind, und versuchen Sie es erneut.

Antwort3

key_load_public: ungültiges Format

Putty und PowerShell generieren/verwenden unterschiedliche Schlüsselformate. Bei SSH müssen alle Sterne in einer Reihe stehen und Sie verwenden wahrscheinlich aufgrund von Inkonsistenzen zwischen PowerShell und Putty nicht das richtige Schlüsselformat. Wenn Sie einen Schlüssel in Putty generiert und den entsprechenden öffentlichen Schlüssel auf den Server hochgeladen haben, können Sie sich nicht über PowerShell anmelden, da dort ein anderes Schlüsselformat erwartet wird.

Ich würde versuchen, die Schlüssel neu zu generieren und von vorne zu beginnen. Stellen Sie sicher, dass Sie diesmal alles konsistent halten. Wenn Sie mit PowerShell einen RSA-Schlüssel generiert haben, stellen Sie sicher, dass Sie den entsprechenden öffentlichen RSA-Schlüssel (ebenfalls von PowerShell generiert) auf den Server hochladen.

Es ist möglicherweise einfacher, einfach separate Schlüsselpaare für PowerShell und Putty zu generieren. Sie müssen dann beide öffentlichen Schlüssel (einen für Putty, einen für PowerShell) in Ihre authorized_keys-Datei auf dem Server hochladen.

https://www.ssh.com/ssh/keygen/#choosing-an-algorithm-and-key-size

https://www.rfc-editor.org/rfc/rfc4716#:~:text=In%20order%20to%20implement%20public,bytes%20exclusive%20line%20termination%20characters.

https://www.digitalocean.com/community/tutorials/understanding-the-ssh-encryption-and-connection-process

Antwort4

Endlich herausgefunden. Hier gibt es zwei Probleme:

  1. Wenn Sie keinen Benutzernamen angeben, verwendet Windows SSH standardmäßig DOMAIN\johndoe (was offensichtlich ein Windows-Benutzername ist), während der Linux-Server nur johndoe erwartet. Um dies zu beheben, rufen Sie ssh johndoe@server333stattdessen auf ssh server333und versuchen Sie dann, den Benutzernamen einzugeben.

  2. Außerdem müssen die Dateinamen über restriktive Berechtigungen verfügen (nur Sie als Eigentümer müssen über Berechtigungen verfügen, niemand sonst). Um dies zu beheben, entfernen Sie alle anderen Benutzer aus den Sicherheitsberechtigungen der Datei.

Nachdem ich beides getan hatte, funktionierte es wie am Schnürchen. Sie müssen den öffentlichen Schlüssel nicht in Ihrem lokalen Ordner home/.ssh ablegen. Sie können Ihren privaten Schlüssel einfach als id_rsa (ohne Erweiterung) benennen, ihn im Ordner home/.ssh ablegen und sich mit dem Server verbinden, indem Siessh johndoe@server333

verwandte Informationen