当前位置: 首页>>技术教程>>正文


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

, , ,

问题描述

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

最佳解决办法

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

解决方案概述

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

“Make sure you have a strong password before installing an SSH server (you may want to disable passwords altogether)”

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

在主机上安装并配置您的OpenSSH服务器

在主机上安装OpenSSH服务器:

sudo apt-get install openssh-server

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

nm-connection-editor

To configure your OpenSSH server“,首先将sshd_config文件复制到您的主目录,或者通过在/etc /ssh中创建read-only副本来备份您的sshd_config文件:”

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.factory-defaults
sudo chmod a-w /etc/ssh/sshd_config.factory-defaults

“备份完sshd_config文件后,您可以使用任何文本编辑器进行更改,例如:”

sudo -H gedit /etc/ssh/sshd_config

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

sudo service ssh restart

考虑以下安全措施

  • 不要在路由器上启用port-forwarding:当局外人要求您的路由器将局外人连接到端口22等时,除非您启用了port-forwarding,否则您的路由器将无法遵守

  • 禁用root登录:注释掉PermitRootLogin without-password;将PermitRootLogin no添加到主机的/etc/ssh/sshd_config

  • 选择non-standard SSH端口:注释掉Port 22;将Port <new-port-number>添加到主机的/etc/ssh/sshd_config

  • 只允许本地连接:添加ListenAddress 192.168.0.10

  • 允许某些端口上的某些用户:将AllowUsers <username>@<IP_address_1> <username>@<IP_address_2>AllowUsers <username>@111.222.333.*添加到主机的/etc/ssh/sshd_config

  • 只允许RSA密钥(无密码)连接:从每个客户端追加~/.ssh/id_rsa.pub的内容作为主机~/.ssh/authorized_keys的新行。然后将PasswordAuthentication no添加到主机的/etc/ssh/sshd_config

  • 慢攻击者的破解尝试:使用主机上的ufw(简单防火墙)将传入连接的速率限制为10 /分钟:sudo apt-get install ufw && sudo ufw limit OpenSSH

  • 有关更多建议,请参阅Keeping SSH Access Secure

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

找到带有短语PasswordAuthentication的行并将其改为:

PasswordAuthentication yes

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

sudo service ssh restart

如果您需要从互联网上的任何地方访问,请在本地路由器上设置端口转发,以将流量导向您的OpenSSH服务器

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

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

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

    • 如果您更改了主机的OpenSSH服务器监听的端口号,请执行以下操作:

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

    • 如果您更改了主机的OpenSSH服务器监听的端口号,请执行以下操作:

      ssh -p <port_number_in_Host's_sshd_config_file> <username>@123.123.1.23
      

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

  1. 在客户端打开Nautilus

  2. 选择文件>连接到服务器

  3. 类型:SSH

  4. 服务器:输入主机的IP地址

  5. 端口:主机的sshd_config文件中指定的端口号

  6. 用户名:用户名

  7. 密码:密码

server,openssh,sftp,ubuntu

在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步:在家中创建一个目录以便上传和修改组的权限。

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

而已 。

请参阅:Setup SFTP on ubuntu

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/970.html,未经允许,请勿转载。