如何在Ubuntu上设置受限SFTP服务器?

我想知道如何设置root,sudo,sftp-only用户帐户,这些帐户在登录时不需要公钥validation。我还想知道如何设置sftp-only用户的主目录。无法访问上层其他目录。

使用Ubuntu帮助您开始在主机上设置ssh服务的最佳资源是OpenSSH Server 。 这将允许您使用SSH文件传输协议 (也称为安全文件传输协议或SFTP)从客户端计算机通过SSH访问,传输和管理文件。

解决方案概述

  • 在Ubuntu上,您可以在主机上设置OpenSSH server ,然后用户可以使用ssh仅使用用户名和密码从客户端连接到主机服务器。 但请注意,建议使用公钥认证,

“在安装SSH服务器之前确保你有一个强密码 (你可能想要完全禁用密码 )”

  • 在Host上创建的管理用户帐户将具有sudo权限,在Host上创建的标准用户帐户将不具有sudo权限。

在主机上安装和配置OpenSSH服务器

要在主机上安装OpenSSH服务器:

 sudo apt-get install openssh-server 

为您的主机提供静态IP地址,以便您可以可靠地连接到它:

 nm-connection-editor 

要配置OpenSSH服务器 ,“首先,通过将sshd_config文件复制到主目录,或者通过执行以下操作在/ etc / ssh中创建只读副本来备份sshd_config文件:”

 sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.factory-defaults sudo chmod aw /etc/ssh/sshd_config.factory-defaults 

“一旦备份了sshd_config文件,就可以使用任何文本编辑器进行更改,例如:”

 sudo -H gedit /etc/ssh/sshd_config 

您必须在主机上重新启动ssh服务才能使这些更改生效

 sudo service ssh restart 

考虑以下安全措施

  • 不要在路由器上启用端口转发:当局外人要求您的路由器将外线连接到端口22等时,除非您启用了端口转发,否则您的路由器将无法遵守
  • 禁用root登录:注释PermitRootLogin without-password ; 将PermitRootLogin no添加到主机的/etc/ssh/sshd_config
  • 选择非标准SSH端口:注释掉Port 22 ; 将Port 到主机的/etc/ssh/sshd_config
  • 仅允许本地连接:添加ListenAddress 192.168.0.10
  • 允许某些端口上的某些用户:将AllowUsers @ @AllowUsers @111.222.333.*到主机的/etc/ssh/sshd_config
  • 仅允许RSA密钥(无密码)连接:将每个客户端的~/.ssh/id_rsa.pub的内容作为主机的~/.ssh/authorized_keys的新行附加。 然后将PasswordAuthentication no添加到Host的/etc/ssh/sshd_config
  • 缓慢攻击者的破解尝试:在主机上使用ufw(简单防火墙)将传入连接速率限制为10 /分钟: sudo apt-get install ufw && sudo ufw limit OpenSSH
  • 有关更多想法,请参阅保持SSH访问安全

如果您认为必须,请在sshd_config文件中启用PasswordAuthentication

找到带有PasswordAuthentication短语的行并将其读取:

 PasswordAuthentication yes 

保存新的sshd_config文件,然后重新启动Host的ssh服务:

 sudo service ssh restart 

如果您需要从Internet上的任何位置进行访问,请在本地路由器上设置端口转发,以将流量定向到您的OpenSSH服务器

请注意端口主机的ssh服务在sshd_config文件中侦听并设置路由器以将针对此端口的TCP / UDP流量转发到OpenSSH服务器的IP地址。

  • 通常,您可以将Web浏览器指向192.168.1.1以登录路由器并设置端口转发。 请参阅配置OpenSSH服务器和路由器以通过Internet接受SSH连接?

连接到主机并通过命令行或终端登录

  • 要在主机上以打开SFTP shell终端,请在客户端上打开终端并输入以下命令,将123.123.1.23替换为主机的IP地址:

     sftp @123.123.1.23 
    • 如果更改了Host的OpenSSH服务器侦听的端口号,请执行以下操作:

       sftp -P  @123.123.1.23 
  • 要在主机上以打开SSH shell终端,请在客户端上打开终端并输入以下命令,将123.123.1.23替换为主机的IP地址:

     ssh @123.123.1.23 
    • 如果更改了Host的OpenSSH服务器侦听的端口号,请执行以下操作:

       ssh -p  @123.123.1.23 

连接到主机并通过GUI文件管理器(例如,Nautilus)登录,以获得更可视的SFTP访问以启用文件传输

  1. 在客户端打开Nautilus
  2. 选择文件>连接到服务器
  3. 键入: SSH
  4. 服务器:输入主机的IP地址
  5. 端口:Host的sshd_config文件中指定的端口号
  6. 用户名:username
  7. 密码:密码

在此处输入图像描述

在14.04:

  1. 在客户端打开Nautilus
  2. 连接到服务器
  3. 输入:`ssh @ 123.123.1.23:

在主机上创建标准用户帐户,其主文件夹之外的文件权限有限

主机上适当的文件权限保证您在主机上创建的每个标准用户(没有sudo权限)将拥有其/home/new_user目录,但对目录结构的其余部分具有有限的权限。

  • 有限的权限并不一定意味着他们无法查看文件名和目录结构。

希望有用!

步骤1:如果未安装,请安装OpenSSH软件包

 sudo apt-get install openssh-server 

步骤2:为SFTP用户创建单独的组。

 sudo addgroup ftpaccess 

步骤3:编辑/etc/ssh/sshd_config文件并进行如下更改。 在下面找到并评论。

 #Subsystem sftp /usr/lib/openssh/sftp-server 

并将这些行添加到文件的末尾。

 Subsystem sftp internal-sftp Match group ftpaccess ChrootDirectory %h X11Forwarding no AllowTcpForwarding no ForceCommand internal-sftp 

第4步:重新启动sshd服务。

 sudo service ssh restart 

步骤5:添加具有ftpaccess组的用户并创建密码。

 sudo adduser paul --ingroup ftpaccess --shell /usr/sbin/nologin 

第6步:修改主目录权限。

 sudo chown root:root /home/paul 

步骤7:在home中创建一个目录,用于上传和修改组的权限。

 sudo mkdir /home/paul/www sudo chown paul:ftpaccess /home/paul/www 

而已 。

请参阅: 在ubuntu上设置SFTP

Denyhosts是除了“jtd”提到的那些你可能想看的另一个工具。 它可以自动阻止对SSH服务器的重复连接尝试。 它可以在Ubuntu存储库中安装。

限制对用户的访问权限

在这里,我们只允许用户执行文件传输,我们将禁用终端访问。

为此,在配置文件的底部添加以下代码。

 $ sudo nano /etc/ssh/sshd_config 

现在该文件将打开并粘贴代码。

 /etc/ssh/sshd_config . . . Match User filemg ForceCommand internal-sftp PasswordAuthentication yes ChrootDirectory /var/sftp PermitTunnel no AllowAgentForwarding no AllowTcpForwarding no X11Forwarding no 

filemg替换为您的用户名。 然后保存并关闭该文件。

而已。

参考: 如何在Ubuntu 16.04中使用SFTP