Keine Verbindung zum lokalen SSH-Server mit öffentlichem Schlüssel vom Laptop für SSH-Kopie-ID möglich

Keine Verbindung zum lokalen SSH-Server mit öffentlichem Schlüssel vom Laptop für SSH-Kopie-ID möglich

Ich kann beim besten Willen nicht herausfinden, was ich hier falsch mache, und brauche jemand anderen, der mich auf meine Fehler hinweist. Ich führe lokal einen SSHD-Dienst auf meinem Arch-Desktop aus, wobei UFW den angegebenen SSH-Port öffnet.

Die Kennwortauthentifizierung funktioniert, wenn ich sie aktiviere, allerdings kann ich meinen öffentlichen Schlüssel auch dann nicht übertragen ssh-copy-id. Wenn ich sshd_confignur den öffentlichen Schlüssel einstelle, wird die Verbindung abgelehnt.

Die ssh [insert additional commands] -vvvDebugdaten bestätigen nur, dass die Maschine meinen öffentlichen Schlüssel noch nicht hat. Wenn ich es aber über mein lokales Netzwerk ausführe, wird nur angezeigt, dass noch ein Schlüssel installiert werden muss. Wenn ich dazu aufgefordert werde, soll ich den Schlüssel installieren. Dann wird jedoch die Verbindung verweigert.ssh-copy-id -p 31221 -i ~/.ssh/ed25519key.pub [email protected]

Meine UFW-Regeln. Beachten Sie, dass die spezifische IP-Adresse das Letzte war, was ich zu beseitigen versuchte. Sie war nicht die ganze Zeit da.

[john@thedream ssh]$ sudo ufw status
[sudo] password for john:
Status: active

To                         Action      From
--                         ------      ----
WWW Full                   ALLOW       Anywhere
31221                      ALLOW       192.168.1.0/24
31221                      ALLOW       192.168.1.251
WWW Full (v6)              ALLOW       Anywhere (v6)

Meine sshd_config

#   $OpenBSD: sshd_config,v 1.104 2021/07/02 05:11:21 dtucker Exp $

# This is the sshd server system-wide configuration file.  See
# sshd_config(5) for more information.

# This sshd was compiled with PATH=/usr/local/sbin:/usr/local/bin:/usr/bin

# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented.  Uncommented options override the
# default value.

#Port 22
Port 31221
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::

#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_ecdsa_key
#HostKey /etc/ssh/ssh_host_ed25519_key

# Ciphers and keying
#RekeyLimit default none

# Logging
#SyslogFacility AUTH
#LogLevel INFO

# Authentication:

#LoginGraceTime 2m
PermitRootLogin no
#StrictModes yes
#MaxAuthTries 50
#MaxSessions 10

PubkeyAuthentication yes

# The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2
# but this is overridden so installations will only check .ssh/authorized_keys
AuthorizedKeysFile  .ssh/authorized_keys

#AuthorizedPrincipalsFile none

#AuthorizedKeysCommand none
#AuthorizedKeysCommandUser nobody

# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
#HostbasedAuthentication no
# Change to yes if you don't trust ~/.ssh/known_hosts for
# HostbasedAuthentication
#IgnoreUserKnownHosts no
# Don't read the user's ~/.rhosts and ~/.shosts files
#IgnoreRhosts yes

# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication no
AuthenticationMethods publickey
#PermitEmptyPasswords no

# Change to no to disable s/key passwords
KbdInteractiveAuthentication no

# Kerberos options
#KerberosAuthentication no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes
#KerberosGetAFSToken no

# GSSAPI options
#GSSAPIAuthentication yes
#GSSAPICleanupCredentials no

# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the KbdInteractiveAuthentication and
# PasswordAuthentication.  Depending on your PAM configuration,
# PAM authentication via KbdInteractiveAuthentication may bypass
# the setting of "PermitRootLogin prohibit-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and KbdInteractiveAuthentication to 'no'.
UsePAM yes

#AllowAgentForwarding yes
#AllowTcpForwarding yes
#GatewayPorts no
#X11Forwarding yes
#X11DisplayOffset 10
#X11UseLocalhost yes
#PermitTTY yes
#PrintMotd no
#PrintLastLog yes
#TCPKeepAlive yes
#PermitUserEnvironment no
#Compression delayed
#ClientAliveInterval 0
#ClientAliveCountMax 3
#UseDNS no
#PidFile /run/sshd.pid
#MaxStartups 10:30:100
#PermitTunnel no
#ChrootDirectory none
#VersionAddendum none

# no default banner path
#Banner none

# override default of no subsystems
Subsystem   sftp    /usr/lib/ssh/sftp-server

# Example of overriding settings on a per-user basis
#Match User anoncvs
#   X11Forwarding no
#   AllowTcpForwarding no
#   PermitTTY no
#   ForceCommand cvs server

Mein SSHD-Dienst läuft

[john@thedream ssh]$ sudo systemctl status sshd
● sshd.service - OpenSSH Daemon
     Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; preset: disabled)
     Active: active (running) since Tue 2023-02-21 18:02:28 CST; 2s ago
   Main PID: 9451 (sshd)
      Tasks: 1 (limit: 38319)
     Memory: 1.1M
        CPU: 4ms
     CGroup: /system.slice/sshd.service
             └─9451 "sshd: /usr/bin/sshd -D [listener] 0 of 10-100 startups"

Feb 21 18:02:28 thedream systemd[1]: Started OpenSSH Daemon.
Feb 21 18:02:28 thedream sshd[9451]: Server listening on 0.0.0.0 port 31221.
Feb 21 18:02:28 thedream sshd[9451]: Server listening on :: port 31221.

Und mein Port 31221 ist offen

[john@thedream ssh]$ sudo lsof -i:31221
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd    9451 root    3u  IPv4  88455      0t0  TCP *:31221 (LISTEN)
sshd    9451 root    4u  IPv6  88457      0t0  TCP *:31221 (LISTEN)

Antwort1

Soweit ich das herausgefunden habe, können Sie also „ssh-copy-id“ nur mit PasswordAuthenticationder Einstellung „set to“ verwenden.yes

Zitat aus der ssh-copy-idManpage: (presumably using a login password, so password authentication should be enabled, unless you've done some clever use of multiple identities)

Die Einschränkung besteht darin, dass Sie mehrere Identitäten gleichzeitig einrichten und für eine davon bereits ein öffentlicher Schlüssel auf dem Server gespeichert ist. Ich bin mir nicht sicher, wie Sie das genau einrichten oder ob zusätzliche Schritte erforderlich sind. Ich glaube jedoch, dass es mit Ihrer clientseitigen SSH-Konfiguration ganz einfach wäre, wie Sie es bei anderen Diensten tun würden.

Ich muss vorher auch etwas vermasselt haben, indem ich meine Passwortauthentifizierung vorher aktiviert hatte, und habe es nicht bemerkt.

Die Auflösung lautet:

  1. Einrichten eines einfachen, aber sicheren SSH-Servers mit SSHD auf dem Host-Rechner
  2. Generieren Sie dann ein Schlüsselpaar auf dem Client und übertragen Sie ssh-copy-idIhren öffentlichen Schlüssel auf den Server.
  3. Deaktivieren Sie dann die Kennwortauthentifizierung in der SSHD-Konfiguration auf dem Server.
  4. Aktivieren Sie abschließend die Publickey-Authentifizierungsoptionen in derselben Konfiguration.

Scheint gut zu funktionieren, nachdem man zu den Grundlagen zurückgekehrt ist.

verwandte Informationen