我的项目需要我为某些用户禁用 sftp,但这些用户仍然需要通过 ssh 连接。有谁知道如何实现这一点?
我在 看到了更改文件的建议/etc/ssh/sshd_config,但我不确定要更改什么。
最近我在 SFTP 服务器上遇到磁盘空间不足的问题,我意识到我不知道如何检查剩余多少甚至总数。
有谁知道如何通过像 FileZilla 这样的应用程序来做到这一点,或者可能有一个可以用于此目的的命令?
请注意,服务器托管在第三方,我希望有一种方法可以在不经过它们的情况下回答这个问题。
更新:
我尝试使用 putty 和 cygwin ssh 通过 shell 进行连接。当 cygwin 给我以下错误消息时,Putty 默默地失败了:
$ ssh [user]@[host] -i "[priv.key]"
Last login: Wed Aug 17 12:54:46 2011 from 195.204.103.176
Could not chdir to home directory /local00/ftproot/[user]: No such file or directory
/usr/local/sbin/scponlyc: No such file or directory
Connection to [host] closed.
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我刚刚设置了我的 SFTP 服务器,当我从我的第一个用户帐户使用它时,它工作正常。我想添加一个我们称之为“magnarp”的用户。起初我在 sshd_config 中这样做:
Subsystem sftp internal-sftp
Match group sftponly
ChrootDirectory /home/%u
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
Run Code Online (Sandbox Code Playgroud)
效果很好,用户 magnarp 进入了他的主目录。然后我尝试向它添加一个符号链接。
home$ sudo ln -s /home/DUMP/High\ Defenition/ /home/magnarp/"High Defenition"
Run Code Online (Sandbox Code Playgroud)
符号链接通过 SSH 运行良好,但不能通过 SFTP。
所以我现在想做的是将 Chroot 组 sftponly 设置为 /home/DUMP,我这样做了:
Match group sftponly
ChrootDirectory /home/DUMP
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
Run Code Online (Sandbox Code Playgroud)
DUMP 文件夹的权限如下。
drwxrwxrwx 5 root root 4096 aug 18 02:25 DUMP
Run Code Online (Sandbox Code Playgroud)
这是错误代码:
Aug 18 16:40:29 nixon-01 sshd[7346]: Connection from 192.168.1.198 port 51354
Aug 18 16:40:30 nixon-01 sshd[7346]: Accepted password …Run Code Online (Sandbox Code Playgroud) 我知道这个问题已经讨论过了,但是通过阅读帖子我无法找到答案,因为有些人说“是的 umask 可以工作”,而其他人说“OpenSSH put 命令始终保留权限”
在此之前,准确地说:
internal-sftp子系统,-u 0002用于 umask-por-P选项从我一方面读到的内容:有很多方法可以为 SFTP 传输定义 umask:
-u的internal-sftp(或sftp-server)中,由于5.4的OpenSSHsftp-server(在其中我们明确设置了 umask - 这不适合 chrooted 环境顺便说一句)pam.d/sshd文件中添加特定配置另一方面,我读过:
OpenSSH SFTP 客户端和服务器确实传输权限(作为扩展)并在本地创建具有权限的远程文件。AFAICT,没有办法禁用这种行为。
所以我做了以下测试:
在我的客户端上,我创建了权限为 600 和 700 的文件MYFILE和目录MYDIR。
然后用sftp命令:
mkdir => the new directory has permissions following the umask (OK)
put MYFILE …Run Code Online (Sandbox Code Playgroud) 这可能看起来不是一个发展问题,但本质上它是。让我解释一下如何。我们的主要开发重点是动态内容页面。我们的一些客户要求我们在我们的服务器(他们付费)中为他们的旧静态内容留出空间。我们过去通过为客户提供不同域的 ftp 帐户来实现此目的。(例如,客户域是 customer.com,但他们通过 otherdomain.com/customerstatic 访问其静态内容)。
现在我们想提高安全性,为客户在他们的 linux 服务器中提供 sftp 帐户。我在他们的 shell 环境中使用 openssh/sftp-server,所以他们无法登录或执行命令。
问题在于,许多文件系统文件本质上是默认的 (drwxr-xr-x),这意味着任何用户都可以读取目录的内容,可能还有一些文件。我不认为将整个文件系统更改为 -rwxr-x--x 是明智之举,因为我不知道有多少系统文件需要该读取权限。
过去是否有人遇到过这个问题。如果有,能指教一下吗?
谢谢
我正在尝试设置备份服务器。我想将每个用户(客户端)chroot到其主目录,并且只允许它使用sftp和rsync。
我很快发现我并不是唯一一个尝试做这样的事情的人,我找到了这个指南并遵循了它。所以现在我只有 sftp 的 chroot 用户。
然后我发现 rsync 需要 ssh 才能在另一台机器上生成自己,而 sftp 是不够的。给每个用户一个 ssh 登录是我首先想避免的。
谁能想到一些可能的解决方案?
谢谢,
标记
我有一个需要 FTP 且无法执行 SFTP 的旧版应用程序。
我的解决办法是:
我想知道我是否可以将 VSFTPD 配置为除了防火墙之外忽略来自除本地主机之外的任何地方的连接。腰带和护腕都有。
ftp 支持将put "|..." "remote-file.name"数据通过管道传输到 ftp 连接的命令。sftp 有类似的东西吗?
在 sftp 中,我收到以下错误:
sftp 'jmw@backupsrv:/uploads'
sftp> put "| tar -cx /storage" "backup-2012-06-19--17-51.tgz"
stat | tar -cv /storage: No such file or directory
Run Code Online (Sandbox Code Playgroud)
如上所述,sftp 客户端显然没有执行命令。
我想使用管道命令直接将文件流重定向到 sftp。(因为在将其上传到 sftp 服务器之前,没有足够的空间在同一磁盘上创建备份文件。)
一台 ubuntu 服务器在不同的域中托管 3 个应用程序。
每个应用程序都有自己的开发人员。
应用程序开发人员属于 linux "sftp" 组。
chroot允许每个应用程序开发人员使用密码 sftp 访问。
/home/app1/prod
/home/app2/prod
/home/app3/prod
Run Code Online (Sandbox Code Playgroud)
在 sshd_config
Match Group sftp
PasswordAuthentication yes
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
Run Code Online (Sandbox Code Playgroud)
我们担心一个应用程序中的编程漏洞会导致其他两个应用程序出现问题。
我们应该使用 lxc 容器而不是 chroot 吗?为什么?对 lxc 容器的更改对应用程序开发人员是透明的吗?
我的任务是安装一个新的 SFTP 服务器。就其本身而言,这是一个非常简单的操作:简单地使用internal-sftp无处不在的 SSH 服务(使用 chrooting)的角色就足以拥有一个可靠的 SFTP 服务器。
然而,我的天性总是针对同一问题尝试至少两种不同的方法,并且我意识到我可以使用ProFTPDsftp 插件来做同样的事情,还有更细粒度的文件传输相关选项的额外好处(例如:带宽限制)。另一方面,这个插件默认没有编译(和捆绑),我想避免(也许)“测试较少”的解决方案。
目前,唯一需要的服务是 SFTP;但是,我正在提前玩,我想实施一个不仅可以与 SFTP 一起使用,而且还可以与 FTP/S 一起使用的解决方案。
考虑到我将 chroot 用户在家中,您认为什么是更好的解决方案?
internal-sftp和独立的 FTP 服务器(vsftpd或proftpd)提供 FTP/S 服务