如何只允许通过RSA密钥使用SSH,以及通过密码和chroot允许SFTP?

詹姆斯·牛顿

在我的Ubuntu 16.04 LTS服务器上,我想做以下事情:

  • 启用具有sudo特权的非root用户,以使用RSA密钥(无密码)SSH进入服务器
  • 使选定的非管理员用户可以使用密码通过SFTP将文件上传到其自己的主目录中
  • 防止非管理员用户访问文件系统的其余部分

我正在使用Ubuntu 16.04.3 LTS的新安装版本,因此所有内容均处于默认出厂状态。

我已经仔细阅读了这个问题和答案,但是找不到解决方案。

我创建了一个nonrootadmin具有sudo特权用户。

我创建了一个nonadminsftp用户,用户是该sftpaccess的成员/home/nonadminsftp/目录如下所示:

$ ls -al ~nonadminsftp
total 24
drwxr-xr-x 3 root         root       4096 Oct 25 00:52 .
drwxr-xr-x 5 root         root       4096 Oct 24 22:29 ..
-rw-r--r-- 1 nonadminsftp sftpaccess  220 Sep  1  2015 .bash_logout
-rw-r--r-- 1 nonadminsftp sftpaccess 3771 Sep  1  2015 .bashrc
drwxr-xr-x 3 nonadminsftp sftpaccess 4096 Oct 25 00:50 ftp
-rw-r--r-- 1 nonadminsftp sftpaccess  655 May 16 13:49 .profile

它们各自的条目/etc/passwd如下:

nonrootadmin:x:1000:1000::/home/nonrootadmin:/bin/bash
nonadminsftp:x:1002:1002::/home/nonadminsftp:/usr/sbin/nologin

我对该/etc/sshd/sshd_config文件所做的更改如下:

PermitRootLogin no
#PasswordAuthentication no

AllowUsers nonrootadmin nonadminsftp
Subsystem sftp internal-sftp
Match group sftpaccess
#ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
#ForceCommand internal-sftp

我所看到的解决方案建议对其中的3行进行注释,但我发现:

  • PasswordAuthentication no 防止nonadminsftp用户使用密码连接:

    $ sftp [email protected]
    Permission denied (publickey).
    Couldn't read packet: Connection reset by peer
    
  • ChrootDirectory %h 完全阻止nonrootadmin用户进行连接:

    $ ssh [email protected]
    packet_write_wait: Connection to 12.34.56.78 port 22: Broken pipe`
    
  • ForceCommand internal-sftp 防止nonrootadmin获得SSH访问权限:

    $ ssh [email protected]
    This service allows sftp connections only.
    Connection to mydomain.com closed.`
    

这些行注释掉了:

  • nonrootadmin确实具有使用RSA密钥的SSH访问
  • nonadminsftp可以使用FTP客户端(例如FileZilla)进行连接

但:

  • nonadminsftp没有chroot编到/home/nonadminsftp目录
  • nonrootadmin可以使用密码登录

我想念的是什么?

提前致谢

詹姆斯·牛顿

感谢@muru,以下配置现在可以正常工作:

PermitRootLogin no
PasswordAuthentication no

AllowUsers nonrootadmin nonadminsftp
Subsystem sftp internal-sftp

Match group sftpaccess
# The following directives only apply to users in sftpaccess
PasswordAuthentication yes
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp

我以前已加入nonrootadminsftpaccess组。从群组中删除此用户后...

$ sudo gpasswd -d nonrootadmin sftpaccess
$ getent group ftpaccess
ftpaccess:x:1002:nonadminsftp

...nonrootadmin现在可以使用SSH。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何只允许通过iptables进行ssh和Internet访问?

来自分类Dev

如何允许使用密码而不是SSH的SFTP?

来自分类Dev

如何允许使用密码而不是SSH的SFTP?

来自分类Dev

如何只允许通过SSH访问Web服务器?

来自分类Dev

如何只允许某些用户使用ssh?

来自分类Dev

只允许通过本机iOS和Android应用访问Weblink

来自分类Dev

如何允许同时访问SSH和SFTP?

来自分类Dev

如何允许同时访问SSH和SFTP?

来自分类Dev

如何只允许用户通过重写访问页面?

来自分类Dev

通过无密码短语的RSA密钥SSH进入许多系统

来自分类Dev

只允许某些文件通过.htaccess查看

来自分类Dev

只允许通过特定的URL访问网站

来自分类Dev

如何仅使一个用户通过SSH密钥进行身份验证并允许对所有其他用户进行密码身份验证

来自分类Dev

如何只允许相等和较小的日期

来自分类Dev

如何只允许数字?

来自分类Dev

如何使用RSA密钥设置无密码的SSH

来自分类Dev

如何使用RSA密钥设置无密码的SSH

来自分类Dev

允许root仅通过基于密钥的身份验证通过ssh登录

来自分类Dev

如何只允许子网使用iptables端口

来自分类Dev

如何使用SSH密钥通过Paramiko连接到SFTP-Pageant

来自分类Dev

opensshd / openssh-允许使用密钥对或密码

来自分类Dev

如何只允许通过HTML表单传递预定义的值?

来自分类Dev

如何只允许在单独的Nginx上通过身份验证的用户?

来自分类Dev

如何通过环境变量传递ssh密钥密码

来自分类Dev

只允许通过特定的URL进行网站访问

来自分类Dev

正则表达式只允许数字,让通过单词

来自分类Dev

iptables:如何通过debian路由器允许SSH?

来自分类Dev

SFTP Chroot和SSH

来自分类Dev

如何在chroot环境之外添加指向文件系统的指针-通过OpenSSH使用chroot SFTP

Related 相关文章

  1. 1

    如何只允许通过iptables进行ssh和Internet访问?

  2. 2

    如何允许使用密码而不是SSH的SFTP?

  3. 3

    如何允许使用密码而不是SSH的SFTP?

  4. 4

    如何只允许通过SSH访问Web服务器?

  5. 5

    如何只允许某些用户使用ssh?

  6. 6

    只允许通过本机iOS和Android应用访问Weblink

  7. 7

    如何允许同时访问SSH和SFTP?

  8. 8

    如何允许同时访问SSH和SFTP?

  9. 9

    如何只允许用户通过重写访问页面?

  10. 10

    通过无密码短语的RSA密钥SSH进入许多系统

  11. 11

    只允许某些文件通过.htaccess查看

  12. 12

    只允许通过特定的URL访问网站

  13. 13

    如何仅使一个用户通过SSH密钥进行身份验证并允许对所有其他用户进行密码身份验证

  14. 14

    如何只允许相等和较小的日期

  15. 15

    如何只允许数字?

  16. 16

    如何使用RSA密钥设置无密码的SSH

  17. 17

    如何使用RSA密钥设置无密码的SSH

  18. 18

    允许root仅通过基于密钥的身份验证通过ssh登录

  19. 19

    如何只允许子网使用iptables端口

  20. 20

    如何使用SSH密钥通过Paramiko连接到SFTP-Pageant

  21. 21

    opensshd / openssh-允许使用密钥对或密码

  22. 22

    如何只允许通过HTML表单传递预定义的值?

  23. 23

    如何只允许在单独的Nginx上通过身份验证的用户?

  24. 24

    如何通过环境变量传递ssh密钥密码

  25. 25

    只允许通过特定的URL进行网站访问

  26. 26

    正则表达式只允许数字,让通过单词

  27. 27

    iptables:如何通过debian路由器允许SSH?

  28. 28

    SFTP Chroot和SSH

  29. 29

    如何在chroot环境之外添加指向文件系统的指针-通过OpenSSH使用chroot SFTP

热门标签

归档