我想限制服务器上的所有用户只能使用 SFTP,而管理员组的成员应该具有完全的 SSH 访问权限。
我发现可以通过使用Match Group和来限制组的成员ForceCommand。但我发现没有逻辑否定。所以我试图反向构造它:
# SFTP only, full access only for admin group
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
Match Group admin
X11Forwarding yes
AllowTcpForwarding yes
ForceCommand /usr/local/sbin/ssh-allowcmd.sh
Run Code Online (Sandbox Code Playgroud)
并构建了一个脚本ssh-allowcmd.sh来执行给定的命令或/bin/bash进行交互式访问。
有更好的解决方案吗?
有谁知道使用 SCP/SFTP 删除远程服务器上超过 X 天的文件的好方法吗?当然,我可以在 perl 等上编写一些脚本,但我觉得这太过分了。
任何UNIX方式?
单线?
单独的实用程序?
谢谢
PS 任务是删除一些过时的备份文件。
我们在 VIP 上有 2 台生产服务器,一次只有一台在使用,例如:
myservice.mycompany.uk 通常指向 server1,如果 server1 出现故障,它会更改为指向 server2。
还有一些其他服务器需要通过 SFTP 将文件发送到 myservice.mycompany.uk,如果我们故障转移到 server2,它应该对它们完全透明。
问题是,虽然在 server1 和 server2 上都安装了密钥,但其他服务器会出现主机密钥验证问题,因为 server2 的主机密钥与 server1 的主机密钥不同。这会导致安全错误(因为启用了严格检查),必须从 known_hosts 中删除一行才能使其工作。
我们的 IT 人员建议我们可以在 known_hosts 中创建 2 个条目,一个使用 server1 的密钥,一个使用 server2 的密钥,两者都使用主机 myservice.mycompany.uk。
这可能奏效吗?如何在 Windows 上使用 putty/psftp 完成此操作?由于主机密钥存储在注册表中,因此不允许重复名称。有没有更好的方法,例如,我们可以强制服务器具有相同的主机密钥吗?
我需要将所有文件从current_path移动到current_path/DestinationFolder。
我使用的SFTP 版本是:SFTP 协议版本 2
可用的命令有:
sftp> help
Available commands:
cd path Change remote directory to 'path'
lcd path Change local directory to 'path'
chgrp grp path Change group of file 'path' to 'grp'
chmod mode path Change permissions of file 'path' to 'mode'
chown own path Change owner of file 'path' to 'own'
help Display this help text
get remote-path [local-path] Download file
lls [ls-options [path]] Display local directory listing
ln oldpath …Run Code Online (Sandbox Code Playgroud) 我想构建一个服务器(运行 Debian 或 FreeBSD),通过 sshfs 接收来自不同客户端的备份。每个客户端应该能够读取和写入自己的备份数据,但不能读取和写入任何其他客户端的数据。
我有以下想法:每个客户端通过公钥身份验证连接到 backup@backupserver.local。用户备份有一个特殊的 authorized_keys 文件,如下所示:
command="internal-sftp" chroot="/backup/client-1/data" ssh-rsa (key1)
command="internal-sftp" chroot="/backup/client-2/data" ssh-rsa (key2)
command="internal-sftp" chroot="/backup/client-3/data" ssh-rsa (key3)
etc...
Run Code Online (Sandbox Code Playgroud)
这样做的好处是我不需要为每个客户端使用单独的用户,而且我可以轻松地使用脚本自动生成 authorized_keys 文件。
只有一个问题:chroot=...不起作用。OpenSSH 的authorized_keys 文件似乎没有ChrootDirectory 的等效文件(它在/etc/ssh/sshd_config 中工作,无论是全局还是在Match User 块中)。
是否有一种相当简单的方法可以使用 OpenSSH 完成我想要的操作?也许command=...以巧妙的方式使用指令?或者,是否还有其他 SFTP 服务器可以执行我想要的操作?
编辑:为了更清楚我想要实现的目标:我希望多个客户端能够在我的服务器上存储文件。每个客户端都不能看到任何其他客户端的文件。而且我不想让我的服务器有几十个用户帐户,所以我想要一个易于管理的解决方案,让客户共享一个用户帐户,但仍然无法访问彼此的文件。
我需要:
我发现的选项和相关问题:
只
rssh
SSH 服务器
所以,我想知道还有哪些其他选择,或者其他人如何处理这个特定问题。
我正在尝试在 EC2 上的 ubuntu/precise 上设置 sftp 服务器。我已经成功添加了一个可以通过 ssh 连接的新用户,但是一旦我添加了以下子句:
Match Group sftp
ChrootDirectory /home/%u
AllowTCPForwarding no
X11Forwarding no
ForceCommand internal-sftp
Run Code Online (Sandbox Code Playgroud)
我无法再连接(根本无法连接,无论是 ssh 还是其他方式),我收到消息
Error: Connection refused
Error: Could not connect to server
Run Code Online (Sandbox Code Playgroud)
我能够连接子系统设置为:
#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp
Run Code Online (Sandbox Code Playgroud)
知道为什么 ssh 服务器会因这个“匹配”子句而失败吗?基本上,除了“chroot”部分之外,一切都在工作。
希望你们能帮忙看看我是否在这里做了一些奇怪的事情,我正在尝试使用我设置的用户登录,FileZilla 显示给我:
Command: open "///@///" Command: Pass: ********
Status: Connected to ///
Error: Connection closed by server with exitcode 1
Error: Could not connect to server
Run Code Online (Sandbox Code Playgroud)
所以,我进入了 auth.log,我看到了这个:
Feb 12 11:08:49 sshd[12056]: Accepted password for /// from /// port /// ssh2
Feb 12 11:08:49 sshd[12056]: pam_unix(sshd:session): session opened for user /// by (uid=0)
Feb 12 11:08:50 sshd[12164]: subsystem request for sftp by user ///
Feb 12 11:08:50 sshd[12056]: pam_unix(sshd:session): session closed for user ///
Run Code Online (Sandbox Code Playgroud)
这是相关用户的密码条目:
///:x:666:666:///,,,:/chroot:/usr/bin/rssh
Run Code Online (Sandbox Code Playgroud)
如果我尝试自己运行 rssh,我会发现Allowed commands: …
我需要设置一个本质上具有非常大容量的 SFTP 服务器。我需要向我们的合作伙伴之一提供 SFTP 登录详细信息到服务器,他们将在其中上传数百万个文件,总计数百 TB。然后我会选择性地阅读其中的一些文件。这是唯一的实际要求,任何技术选择都可供选择。
我想到的最简单的方法是让某种 EC2 实例运行 SFTP 服务器,这样上传的任何内容要么直接发送到 S3,要么某种进程在上传时发现新文件,将它们复制到S3,并从磁盘中删除它们。
这是最好的方法吗?有没有其他方法可以获得基本上具有“无限且神奇增长的磁盘空间”的服务器?
谢谢你的帮助!丹尼尔
不幸的是,我无法连接sftp到我的 VPS:
这是我的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
#Privilege Separation is turned on for security
UsePrivilegeSeparation yes
# Lifetime and size of ephemeral version 1 server key
KeyRegenerationInterval 3600
ServerKeyBits …Run Code Online (Sandbox Code Playgroud)