it-swarm.com.de

"Write Failed: Broken Pipe" beim Versuch, sich mit einem bestimmten Benutzer über SSH anzumelden

Ich versuche, einen SSHFTP-Server einzurichten, und nach der Verbindung über Apache @ localhost werde ich sofort mit der Fehlermeldung "Write Failed: Broken Pipe" getrennt. Ich kann mich gut mit [email protected] verbinden, aber nicht mit dem Benutzer Apache.

Dies sind die einzigen Einstellungen, die ich zu sshd_config hinzugefügt habe (ich möchte Apache nur zulassen, wenn er funktioniert):

Match User Apache
    ChrootDirectory /Apache
    AllowTCPForwarding no
    X11Forwarding no
    ForceCommand /usr/lib/openssh/sftp-server
Match
#AllowUsers Apache

Und das habe ich zu ssh_config hinzugefügt:

ServerAliveInterval 120
TCPKeepAlive no

Ich stellte sicher, dass der Benutzer Apache über die vollständigen Berechtigungen für den Ordner/Apache verfügte, und ich kann mich als dieser Benutzer gut anmelden und die Elemente in Terminal ändern. Der Ordner enthält nur 2 Dateien: index.html und test.php

Ich ging auch zu einem anderen Computer im Netzwerk und verwendete FileZilla, um sich als Benutzer jack anzumelden. Es hat gut funktioniert.

Dies ist das Protokoll des Terminals, wenn ich versuche, eine Verbindung herzustellen.

[email protected]:~$ ssh -v [email protected]
OpenSSH_5.9p1 Debian-5ubuntu1.1, OpenSSL 1.0.1 14 Mar 2012
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to localhost [127.0.0.1] port 22.
debug1: Connection established.
debug1: identity file /home/jack/.ssh/id_rsa type -1
debug1: identity file /home/jack/.ssh/id_rsa-cert type -1
debug1: identity file /home/jack/.ssh/id_dsa type -1
debug1: identity file /home/jack/.ssh/id_dsa-cert type -1
debug1: identity file /home/jack/.ssh/id_ecdsa type -1
debug1: identity file /home/jack/.ssh/id_ecdsa-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.9p1 Debian-5ubuntu1.1
debug1: match: OpenSSH_5.9p1 Debian-5ubuntu1.1 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.9p1 Debian-5ubuntu1.1
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server Host key: ECDSA bb:f3:74:9d:97:80:89:dc:d9:68:53:5c:f7:25:19:4e
debug1: Host 'localhost' is known and matches the ECDSA Host key.
debug1: Found key in /home/jack/.ssh/known_hosts:1
debug1: ssh_ecdsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Trying private key: /home/jack/.ssh/id_rsa
debug1: Trying private key: /home/jack/.ssh/id_dsa
debug1: Trying private key: /home/jack/.ssh/id_ecdsa
debug1: Next authentication method: password
[email protected]'s password: 
debug1: Authentication succeeded (password).
Authenticated to localhost ([127.0.0.1]:22).
debug1: channel 0: new [client-session]
debug1: Requesting [email protected]
debug1: Entering interactive session.
Write failed: Broken pipe
[email protected]:~$

Ubuntu-Versionsinfo:

Distributor ID: Ubuntu
Description:    Ubuntu 12.04.2 LTS
Release:    12.04
Codename:   precise

Bearbeiten:

Ich habe den Befehl Sudo grep -ir ssh /var/log/* ausgeführt und Folgendes erhalten:

/var/log/auth.log~:Aug 13 16:08:15 JacksServer sshd[32292]: fatal: bad ownership or modes for chroot directory "/Apache"
/var/log/auth.log~:Aug 13 16:08:15 JacksServer sshd[32156]: pam_unix(sshd:session): session closed for user Apache

Ich habe versucht, chmod 755 /Apache zu tun, wie einige Websites vorgeschlagen haben, und den Besitzer zu wechseln, aber ich erhalte diesen Fehler immer noch. Der Ordner gehört derzeit dem Benutzer Apache.

Weitere Informationen zum Apache-Benutzer:

[email protected]:/Apache# ls -la /Apache
total 24
drwxr-xr-x  4 Apache root    4096 Aug 13 15:49 .
drwxr-xr-x 29 root   root    4096 Aug 13 03:06 ..
drwxr-xr-x  2 Apache nogroup 4096 Aug 13 13:57 .cache
-rw-r--r--  1 Apache root       5 Aug 13 03:56 index.html
-rw-r--r--  1 Apache root       0 Aug 13 03:56 index.html~
drwxr-xr-x  8 Apache root    4096 Aug 13 15:51 .ssh
-rw-r--r--  1 Apache root      20 Aug 13 03:59 test.php
-rw-r--r--  1 Apache root       0 Aug 13 03:59 test.php~
[email protected]:/Apache# ls -la /Apache/.ssh
total 92
drwxr-xr-x  8 Apache root  4096 Aug 13 15:51 .
drwxr-xr-x  4 Apache root  4096 Aug 13 15:49 ..
-rw-r--r--  1 Apache jack   220 Jun  6 20:08 .bash_logout
drwxr-xr-x 19 Apache jack  4096 Aug 13 15:04 .cache
drwxr-xr-x  3 Apache jack  4096 Jun  6 20:49 .compiz-1
drwxr-xr-x  3 Apache jack  4096 Jun  6 20:22 .dbus
drwxr-xr-x  5 Apache jack  4096 Aug 13 05:37 .gconf
-rw-r-----  1 Apache jack     0 Aug 13 15:47 .gksu.lock
drwxr-xr-x  3 Apache jack  4096 Jun  6 20:22 .local
-rw-r--r--  1 Apache jack   675 Jun  6 20:08 .profile
-rw-------  1 Apache jack   256 Jun  6 20:22 .Pulse-cookie
drwxr-xr-x  2 Apache jack  4096 Aug 13 14:20 .ssh
-rw-------  1 Apache jack    56 Aug 13 04:45 .Xauthority
-rw-------  1 Apache jack 44215 Aug 13 13:54 .xsession-errors
11
Jack Cole

Die Antworten auf beide finden Sie in diesem Thread: https://askubuntu.com/questions/134425/how-can-i-chroot-sftp-only-ssh-users-into-their-homes

Msgstr "Grundsätzlich muss das chroot - Verzeichnis im Besitz von root sein und darf keinen Schreibzugriff auf Gruppen haben."

Dies bedeutet, dass Sie sicherstellen müssen, dass Ihre ChrootDirectory (/Apache) im Besitz von root ist und nicht von einer Gruppe/anderen Personen beschrieben werden kann. Dies ist auf einige obskure Sicherheitsrisiken im Zusammenhang mit Setuid zurückzuführen hier umrissen

Um die Frage zu /bin/false: No such file or directory zu beantworten, verwenden Sie stattdessen /sbin/nologin.

25
Excalibur

Ich habe mein Problem in Mac OS X gelöst, ich habe das geändert 

#ClientAliveInterval 0

zu

ClientAliveInterval 300

in/etc/sshd_config nach this und starte die Maschine neu, fertig.

2
limlighten

Als weitere Antwort gepostet, weil zu lang: 

In meinen Befunden macht diese Anforderung von ChrootDirectory es ziemlich nutzlos. Warum sollte das Heimatverzeichnis einer Person für diesen Benutzer nicht beschreibbar sein? Lame. Symlinks sind auch in Chroot Dirs nicht erreichbar.

Allerdings fand ich eine nette Abhilfe. Ich habe ein /home/chroot/outsource-Verzeichnis erstellt und darin mount --bind verwendet, um ein anderes Verzeichnis im System /var/www/clients/theclient in /home/chroot/outsource/theclient einzuhängen. 

Da mount --bind nur bis zum Neustart temporär ist, habe ich diese Zeile in /etc/fstab hinzugefügt:

/var/www/clients/theclient /home/chroot/outsource/theclient none bind,auto,user,noexec 0 0

1
Excalibur