我想让客户端访问我的服务器,但我想将这些用户限制在他们的主目录中。我将在我希望他们能够看到的任何文件中进行绑定挂载。
我创建了一个名为的用户bob并将他添加到一个名为 的新组中sftponly。他们在/home/bob. 我已经将他们的 shell 更改/bin/false为停止 SSH 登录。这是他们的/etc/passwd线路:
bob:x:1001:1002::/home/bob:/bin/false
Run Code Online (Sandbox Code Playgroud)
我还更改/etc/ssh/sshd_config了以下内容:
Match Group sftponly
ChrootDirectory /home/%u
ForceCommand internal-sftp
AllowTcpForwarding no
Run Code Online (Sandbox Code Playgroud)
当我尝试以他们的身份登录时,这就是我看到的
$ sftp bob@server
bob@server's password:
Write failed: Broken pipe
Couldn't read packet: Connection reset by peer
Run Code Online (Sandbox Code Playgroud)
如果我注释掉ChrootDirectory我可以 SFTP的行,但他们可以自由控制服务器。我发现这ChrootDirectory /home可行,但它仍然让他们可以访问任何主目录。我已经明确尝试过,ChrootDirectory /home/bob但这也不起作用。
我究竟做错了什么?我怎样才能限制bob到/home/bob/?
- - 编辑 - - -
好的,所以我只是看了一下/var/log/auth.log,看到了这个:
May 9 14:45:48 nj sshd[5074]: pam_unix(sshd:session): session opened …Run Code Online (Sandbox Code Playgroud) 我想知道如何设置 root、sudo、sftp-only 用户帐户,登录时不需要公钥身份验证。我还想知道如何设置 sftp-only 用户的主目录,他们在哪里无法访问上层其他目录。
我一直在尝试建立一个 SFTP 服务器,让多个用户 chroot 进入他们的主目录。我遵循了本指南(Archive.org 链接)上的建议,然后在用户目录上执行了以下命令
chown root:root /home/user/
chmod 755 /home/user/
Run Code Online (Sandbox Code Playgroud)
每个用户的主目录中都有一个名为 的附加文件夹,该文件夹public归其用户所有,以便他们可以根据需要创建目录以及上传和删除文件。(这是在我之前提到的指南中建议的)
现在,当我执行时sftp -P 435 user@localhost,出现此错误:
写入失败:管道损坏
无法读取数据包:对等方重置连接
我如何从这里开始?最终的想法是让其他机器上的每个用户使用 FileZilla 登录到他们的 chroot 主目录,然后能够上传目录和文件。所有这些都在 SFTP 中(因为它更安全)
我有一个运行 Apache 和 PHP 的非常标准的服务器设置。我正在运行的应用程序创建文件,这些文件归 Apache 用户所有www-data。我通过 SFTP 上传的文件归我自己的用户所有charlesr。所有文件都是该www-data组的一部分。我的问题是我无法通过 SFTP 修改或覆盖由 拥有的任何文件www-data,即使charlesr是该www-data组的一部分。我可以通过 SSH 会话毫无问题地修改文件。
所以我不知道该怎么做。如何授予我的 SFTP 会话权限以修改www-data拥有的文件?
对于一些背景知识,这些是我在设置服务器时为自己写的笔记:
Now set up permissions on `/var/www` where your files are served from by
default:
$ sudo adduser $USER www-data
$ sudo chgrp -R www-data /var/www
$ sudo chmod -R g+rw /var/www
$ sudo chmod -R g+s /var/www
Now log out and log in again to make the …Run Code Online (Sandbox Code Playgroud) 我刚刚安装了带有 LAMP 设置的 Ubuntu Server 10.04。我想在那里托管一个网站,但我不确定哪个是在服务器上获取/编辑我的文件的最佳方式。谷歌搜索提供了很多选择,但我不确定哪个是最好的?
除非有更好的选择,否则我想在另一台 PC(Windows 或 Linux)上创建页面并使用 SFTP 将更改同步到服务器 - 但我是对 ~/ 中的符号链接文件夹执行此操作还是通过更改权限在 /var/www/ 文件夹上?
如何使用 ubuntu 的“连接到服务器”选项连接到我的远程 sftp 帐户?当我的屏幕上出现“连接到服务器”对话框时,“服务类型”只显示:
这些是我可以在下拉列表中看到的唯一 FTP 选项。没有 SFTP 选项?
我正在尝试sftp使用sshfs以下命令将连接安装到文件夹中,该命令会引发错误。
~$ sshfs admin@example.com:/ testfo
remote host has disconnected
Run Code Online (Sandbox Code Playgroud)
如果我通过 SSH 进入系统并用 重复该命令,则会发生同样的错误localhost。此命令也适用于另一台机器,因此问题出在服务器上。
~$ cat /var/log/auth.log
[...]
May 24 22:49:43 example sshd[20095]: Accepted publickey for admin from 24.111.222.33 port 47086 ssh2: RSA ad:xx:6e:xx:14:xx:bd:b5:xx:cb:66:xx:xx:xx:a3:ac
May 24 22:49:43 example sshd[20095]: pam_unix(sshd:session): session opened for user admin by (uid=0)
May 24 22:49:43 example systemd-logind[812]: Removed session 60.
May 24 22:49:43 example systemd-logind[812]: New session 61 of user admin.
May 24 22:49:44 example sshd[20143]: Received disconnect from 24.203.164.45: …Run Code Online (Sandbox Code Playgroud) 有时我需要快速将文件从远程服务器复制到本地计算机。这是我目前的工作流程:
sftp user@hostname:/path/to/file (其中 /path/to/file 是我之前复制的路径)
这不是很痛苦,但如果我可以跳过第 1 步并在键入 sftp 命令时直接使用制表符完成找到文件的路径,那就太好了。
为了说明这一点,我可以开始输入sftp user@hostname:/pressTAB并获取 / 中的文件夹列表。然后我可以继续输入hopress TAB,它会自动完成home,等等。
我不确定这样的功能是否存在,否则理论上是否可以按照描述编写自定义选项卡完成脚本?关于从哪里开始的任何指示?
我已经安装了 curl-7.27.0,它工作正常。但是,当我运行时curl -V,我得到:
curl 7.21.6 (i686-pc-linux-gnu) libcurl/7.21.6 OpenSSL/1.0.0e zlib/1.2.3.4 libidn/1.22 librtmp/2.3
Protocols: dict file ftp ftps gopher http https imap imaps ldap pop3 pop3s rtmp rtsp smtp smtps telnet tftp
Features: GSS-Negotiate IDN IPv6 Largefile NTLM SSL libz
Run Code Online (Sandbox Code Playgroud)
如何启用 SFTP 协议?
我已经搜索了许多网站和论坛,了解如何使用 CHROOT 设置被监禁到某个目录的 SFTP 用户。以下是我遵循的步骤,但我似乎无法获得工作的写入权限。
设置
sshd_config
#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp
Match group webmaster
X11Forwarding no
ChrootDirectory %h
AllowTcpForwarding no
ForceCommand internal-sftp
Run Code Online (Sandbox Code Playgroud)
创建文件夹
mkdir /var/www/sites
Run Code Online (Sandbox Code Playgroud)
创建用户和组
useradd uploader
passwd uploader
usermod -d /var/www/sites uploader
groupadd webmaster uploader
groupadd www-data uploader
Run Code Online (Sandbox Code Playgroud)
权限和所有权
chown root:root /var/www
chmod 755 /var/www/sites
Run Code Online (Sandbox Code Playgroud)
现在,通过这些设置,用户上传者可以通过 SFTP 进入主目录,但无法写入该目录。
发生了 2 个典型错误,我要么无法登录,要么没有写入权限。
登录错误
Error: Network error: Software caused connection abort
Error: Could not connect to server
Changing permissions of /var/www/sites to 775 or 777 causes login error. …Run Code Online (Sandbox Code Playgroud) sftp ×10
chroot ×3
ssh ×3
permissions ×2
apache2 ×1
command-line ×1
curl ×1
lamp ×1
lan ×1
networking ×1
openssh ×1
server ×1
sshfs ×1
vsftpd ×1
webserver ×1