如何在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访问以启用文件传输
- 在客户端打开Nautilus
- 选择文件>连接到服务器
- 键入:
SSH
- 服务器:输入主机的IP地址
- 端口:Host的
sshd_config
文件中指定的端口号 - 用户名:username
- 密码:密码
在14.04:
- 在客户端打开Nautilus
- 连接到服务器
- 输入:`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