问题描述
我想知道如何设置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地址。
-
通常,您可以将您的网络浏览器指向
192.168.1.1
,以便登录您的路由器并设置端口转发。参见Configure OpenSSH server and router to accept SSH connection over internet?
连接到主机并通过命令行或终端登录
-
要在主机上将SFTP shell终端打开为
<username>
,请打开客户机上的终端并输入以下命令,用主机的IP地址替换123.123.1.23
:sftp <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.23
:ssh <username>@123.123.1.23
-
如果您更改了主机的OpenSSH服务器监听的端口号,请执行以下操作:
ssh -p <port_number_in_Host's_sshd_config_file> <username>@123.123.1.23
-
连接到主机并通过GUI文件管理器(例如Nautilus)登录以获得更多可视化SFTP访问以启用文件传输
-
在客户端打开Nautilus
-
选择文件>连接到服务器
-
类型:
SSH
-
服务器:输入主机的IP地址
-
端口:主机的
sshd_config
文件中指定的端口号 -
用户名:用户名
-
密码:密码
在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步:在家中创建一个目录以便上传和修改组的权限。
sudo mkdir /home/paul/www
sudo chown paul:ftpaccess /home/paul/www
而已 。