有什么方法可以在 Linux 机器上配置用户(在本例中为 Centos 5.2),以便他们可以使用 scp 检索文件,但实际上无法使用 SSH 登录到服务器?
小智 48
已弃用:请注意以下答案已过时。rssh 不再维护,不再是一种安全的方法。
rssh shell ( http://pizzashack.org/rssh/ ) 正是为此目的而设计的。
由于 RHEL/CentOS 5.2 不包含用于 rssh 的软件包,您可以查看此处以获取 RPM:http : //dag.wieers.com/rpm/packages/rssh/
要使用它,只需将其设置为新用户的 shell,如下所示:
useradd -m -d /home/scpuser1 -s /usr/bin/rssh scpuser1
passwd scpuser1
Run Code Online (Sandbox Code Playgroud)
..或更改现有的外壳,如下所示:
chsh -s /usr/bin/rssh scpuser1
Run Code Online (Sandbox Code Playgroud)
..并编辑/etc/rssh.conf
以配置 rssh shell - 特别是取消注释allowscp
行以启用所有 rssh 用户的 SCP 访问。
(您可能还想使用 chroot 将用户留在家中,但那是另一回事。)
小智 41
我迟到了,但是您可以使用 ssh 密钥并指定其 ~/.ssh/authorized_keys 文件中允许的确切命令,例如
no-port-forwarding,no-pty,command="scp 源目标" ssh-dss ...
您可能需要在目标上使用 ps 来设置正确的命令设置。
PS:如果您使用“-v”运行测试 scp 命令,您可以看到类似这样的内容
debug1: Sending command: scp -v -t myfile.txt
Run Code Online (Sandbox Code Playgroud)
您会注意到“-t”是一个未公开的 scp 选项,由远端的程序使用。这让您了解需要放入authorized_keys 中的内容。
编辑: 您可以在此 StackOverflow 问题中找到更多信息(带有多个链接)。
这是一个工作示例,适用backup_user
于在服务器端命名的用户。
~backup_user/.ssh/authorized_keys
服务器端的内容(有更多安全限制):
no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="scp -v -r -d -t ~/CONTENT" ssh-rsa AAAAMYRSAKEY...
Run Code Online (Sandbox Code Playgroud)
在 ~backup_user/ 中创建一个链接,链接到应该可以访问内容的目录。
$ ln -s /path/to/directory/with/accessible/content ~backup_user/CONTENT
Run Code Online (Sandbox Code Playgroud)
现在,从客户端,以下命令应该可以工作:
scp -v -r -P 2222 -i .ssh/id_rsa_key_file path/to/data backup_user@SERVER:~/CONTENT
Run Code Online (Sandbox Code Playgroud)
此命令的作用:
-v
从命令和authorized_keys 文件中删除)-r
如果您不想进行递归复制,您可以从 command 和 authorized_keys 文件中删除)-P 2222
从命令中删除)-i .ssh/id_rsa_key_file
path/to/data
将被复制到/path/to/directory/with/accessible/content/
要将文件(或多个)从服务器复制到客户端,您应该创建一个 shell 脚本来处理这里描述的情况
Fra*_*eas 34
我参加聚会有点晚了,但是我建议您查看ForceCommand
OpenSSH的指令。
Subsystem sftp internal-sftp
Match group sftponly
ForceCommand internal-sftp
Run Code Online (Sandbox Code Playgroud)
当然,这是 SFTP 而不是 SCP,但它达到了相同的目标,比使用受限 shell 更安全。此外,如果您愿意,您可以 chroot 用户。
我使用 MySecureShell 来做到这一点。您也可以配置其他限制。
https://github.com/mysecureshell/mysecureshell
将连接限制为仅 SFTP/SCP。没有外壳访问。
我建议使用 scponly。
它是一个受限制的 shell,允许用户执行听起来像的操作,将 SCP 文件发送到服务器,但实际上并不登录。软件的信息和源代码下载可在此处获得,预编译的 RPM 包可通过以下网址获得EPEL YUM 存储库。
安装后,您需要配置您希望限制访问的每个用户帐户,以使用新安装的受限 shell。您可以通过 /etc/passwd 手动执行此操作或使用以下命令: usermod -s /usr/bin/scponly USERNAME
归档时间: |
|
查看次数: |
102755 次 |
最近记录: |