Ermöglichen Sie neuen Benutzern, sich über ssh anzumelden

8

Ich habe einen Server erhalten, der für einige Berechnungen verwendet werden kann. Ich habe das Root-Passwort erhalten und sie haben mir gesagt, ich soll ein Konto für mich selbst erstellen.

Ich habe mit ssh root@host dem Root-Passwort auf den Server zugegriffen und ihn eingegeben. Ich habe dann einen Benutzer mit erstellt sudo useradd -m mynameund ein Passwort festgelegt. Dann logge ich mich aus und versuche es zu tunssh myname@host

Unmittelbar nachdem ich mein Passwort eingegeben habe, werden meine Verbindungen geschlossen:

Connection to host closed by remote host.
Connection to host closed.

Ich habe versucht, die Dateien host.deny und host.allow zu untersuchen, aber sie scheinen nicht geändert zu werden (sie sind mit # auskommentiert).

Dann habe ich versucht zu untersuchen etc/ssh/sshd_config, aber ich weiß nicht genau, wonach ich suchen soll. Dies sind einige der Parameter, die relevant erscheinen:

# Authentication:
LoginGraceTime 120
PermitRootLogin yes
StrictModes yes

RSAAuthentication yes
PubkeyAuthentication yes
#AuthorizedKeysFile %h/.ssh/authorized_keys

# Don't read the user's ~/.rhosts and ~/.shosts files
IgnoreRhosts yes
# For this to work you will also need host keys in /etc/ssh_known_hosts
RhostsRSAAuthentication no
# similar for protocol version 2
HostbasedAuthentication no
# Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication
#IgnoreUserKnownHosts yes
# Change to no to disable tunnelled clear text passwords
#PasswordAuthentication yes

Was könnte das Problem sein? Beachten Sie, dass ich nicht versuche, mich mit SSH-Schlüsseln anzumelden. Das Einfügen des Passworts ist in Ordnung. Wie kann ich das zum Laufen bringen?

Bearbeiten Dies ist der Inhalt der gesamten Datei sshd_config:

# Package generated configuration file
# See the sshd_config(5) manpage for details

# What ports, IPs and protocols we listen for
Port 22
# Use these options to restrict which interfaces/protocols sshd will bind to
#ListenAddress ::
#ListenAddress 0.0.0.0
Protocol 2
# HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
#Privilege Separation is turned on for security
UsePrivilegeSeparation yes

# Lifetime and size of ephemeral version 1 server key
KeyRegenerationInterval 3600
ServerKeyBits 1024

# Logging
SyslogFacility AUTH
LogLevel INFO

# Authentication:
LoginGraceTime 120
PermitRootLogin yes
StrictModes yes

RSAAuthentication yes
PubkeyAuthentication yes
#AuthorizedKeysFile %h/.ssh/authorized_keys

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

# To enable empty passwords, change to yes (NOT RECOMMENDED)
PermitEmptyPasswords no

# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
ChallengeResponseAuthentication no

# Change to no to disable tunnelled clear text passwords
#PasswordAuthentication yes

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

# GSSAPI options
#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes

X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
#UseLogin no

#MaxStartups 10:30:60
#Banner /etc/issue.net

# Allow client to pass locale environment variables
AcceptEnv LANG LC_*

Subsystem sftp /usr/lib/openssh/sftp-server

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

Bearbeiten 2 Hier ist die Ausgabe des Verbindungsversuchs mitssh -vv username@host

OpenSSH_7.2p2 Ubuntu-4ubuntu2.2, OpenSSL 1.0.2g  1 Mar 2016
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug2: resolving "host_name" port 22
debug2: ssh_connect_direct: needpriv 0
debug1: Connecting to host_name [ip_address] port 22.
debug1: Connection established.
debug1: key_load_public: No such file or directory
debug1: identity file /localhome/username/.ssh/id_rsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /localhome/username/.ssh/id_rsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /localhome/username/.ssh/id_dsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /localhome/username/.ssh/id_dsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /localhome/username/.ssh/id_ecdsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /localhome/username/.ssh/id_ecdsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /localhome/username/.ssh/id_ed25519 type -1
debug1: key_load_public: No such file or directory
debug1: identity file /localhome/username/.ssh/id_ed25519-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.2
debug1: Remote protocol version 2.0, remote software version OpenSSH_7.2p2 Ubuntu-4ubuntu2.2
debug1: match: OpenSSH_7.2p2 Ubuntu-4ubuntu2.2 pat OpenSSH* compat 0x04000000
debug2: fd 5 setting O_NONBLOCK
debug1: Authenticating to host_name:22 as ‘username_on_server’
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug2: local client KEXINIT proposal
[…]
debug1: Server host key: [serverkey]
debug1: Host 'host_name' is known and matches the ECDSA host key.
debug1: Found key in /localhome/username/.ssh/known_hosts:5
debug2: set_newkeys: mode 1
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug2: set_newkeys: mode 0
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS received
debug2: key: /localhome/username/.ssh/id_rsa ((nil))
debug2: key: /localhome/username/.ssh/id_dsa ((nil))
debug2: key: /localhome/username/.ssh/id_ecdsa ((nil))
debug2: key: /localhome/username/.ssh/id_ed25519 ((nil))
debug1: SSH2_MSG_EXT_INFO received
debug1: kex_input_ext_info: server-sig-algs=<rsa-sha2-256,rsa-sha2-512>
debug2: service_accept: ssh-userauth
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Trying private key: /localhome/username/.ssh/id_rsa
debug1: Trying private key: /localhome/username/.ssh/id_dsa
debug1: Trying private key: /localhome/username/.ssh/id_ecdsa
debug1: Trying private key: /localhome/username/.ssh/id_ed25519
debug2: we did not send a packet, disable method
debug1: Next authentication method: password
username_on_server@host_name's password: <——- Here I inserted my password
debug2: we sent a password packet, wait for reply
debug1: Authentication succeeded (password).
Authenticated to host_name ([ip_address]:22).
debug1: channel 0: new [client-session]
debug2: channel 0: send open
debug1: Requesting [email protected]
debug1: Entering interactive session.
debug1: pledge: network
debug1: channel 0: free: client-session, nchannels 1
Connection to host_name closed by remote host.
Connection to host_name closed.
Transferred: sent 1736, received 1388 bytes, in 0.0 seconds
Bytes per second: sent 9760471.5, received 7803879.3
debug1: Exit status -1

Bearbeiten Sie 3 das .profile des neuen Benutzers auf dem Server

# if running bash
if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
        . "$HOME/.bashrc"
    fi
fi

# set PATH so it includes user's private bin directories
PATH="$HOME/bin:$HOME/.local/bin:$PATH"
Ameise
quelle
2
- Haben Sie entweder ein Passwort für myname erstellt (mit passwd) oder einen öffentlichen Schlüssel in ~ / .ssh / authorized_keys festgelegt? - Was gibt es in sshd_config für AllowUsers?
Tonioc
1
Versuchen Sie ssh -vvv, um festzustellen, ob Fehlermeldungen angezeigt werden. Überprüfen Sie auch die Nachrichtenprotokolle auf dem Server
Raman Sailopal
2
Tonioc ist richtig. Sie benötigen 1. ein Kennwort für das Konto, um es zu entsperren, und 2. die Einrichtung der Authentifizierung mit öffentlichem Schlüssel für diesen Benutzer. Die Box akzeptiert anscheinend nur die Authentifizierung mit öffentlichem Schlüssel. Sehen Sie, wie PasswordAuthenticationauskommentiert wird?
Patrick
@Patrick - Diese auskommentierte Zeile zeigt nur die Standardeinstellung. Um es auf NEIN zu schalten, müssten Sie es auskommentieren. Es ist also wahrscheinlich, dass es Passwörter akzeptiert, und tatsächlich gibt Ant in der ursprünglichen Frage an, dass er den Benutzer root und ein Passwort angemeldet hat.
EightBitTony
1
Verwenden Sie ssh -vv myname@hostund wenn Sie das Problem in der Ausgabe nicht sehen können, fügen Sie die Ausgabe (formatiert) Ihrer Frage hinzu.
EightBitTony

Antworten:

1

Stellen Sie sicher, dass das Home-Verzeichnis des Benutzers erstellt wurde, mit dem Sie sich anmelden möchten, dass der Eigentümer auch Ihr Benutzer ist und dass ~ / .ssh auf chmod 700 festgelegt ist. Überprüfen Sie außerdem / var / log / secure auf Fehler, während Sie versuchen sich anzumelden.

Bootbeast
quelle
0

Die ssh -vvAusgabe scheint darauf hinzudeuten, dass die Kennwortauthentifizierung akzeptiert wurde. Bis zu diesem Punkt scheint alles in Ordnung zu sein, aber unmittelbar danach passiert etwas, das die Sitzung schließt. Dinge, die ich überprüfen würde:

  1. Scheint offensichtlich, aber da dies ein neuer Benutzer ist, haben Sie überprüft, ob die Anmeldeshell auf etwas Gültiges eingestellt ist? (dh /bin/bashund nicht nologinoder nottyusw.)
  2. Eher ein langer Schuss, aber suchen Sie in ~ / .bashrc, ~ / .profile usw. nach etwas Seltsamem, das beim Anmelden möglicherweise ausgeführt werden könnte. Wie oben von @ceving vorgeschlagen, können Sie eine SSH-Sitzung versuchen, bei der das .profile in Ihrer Anmeldeshell nicht ausgeführt wird.
Christopher Hunter
quelle