如何设置 sftp 用户使用密码登录 EC2 ubuntu 服务器?

如何设置 sftp 用户使用密码登录 EC2 ubuntu 服务器?

我在 EC2 实例上运行了一个 Ubuntu 服务器。要登录该服务器,我使用证书文件,无需任何密码。

我已经安装并配置了 vsftpd,并创建了一个用户(我们称他为“testuser”),我为其设置了一个 /bin/false ssh 终端,因此它只能通过 sftp 连接并上传/访问其主目录中的文件。

但是 - 当我尝试从我的电脑连接到服务器时,运行

sftp testuser@my-ec2-server

我明白了

权限被拒绝(公钥)。
连接已关闭

消息,所以无法登录。

我怎样才能仅删除此用户的证书要求(这意味着“ubuntu”用户仍然必须使用证书文件通过 ssh 登录),以便普通 sftp 客户端能够使用用户名和密码进行连接?

谢谢。

PS 在微型实例上使用规范的 64 位 Ubuntu Server 10.10 官方 AMI。

答案1

为了实现你的愿望,你需要做两件不同的事情

  1. 更改 sshd 配置以接受密码

首先我要说的是,这样做是个坏主意,我宁愿为你的用户生成证书,而不是激活密码,不过如果你想这样做,只需编辑/etc/ssh/sshd_config和更改或取消注释它,这样它就会显示PasswordAuthentication yes。完成后,重新启动 sshdservice ssh restart

  1. 让用户只使用 sftp 进行 FTP 操作,无需 shell

为了实现这一点,你需要安装 rsh(限制 shell)并将用户 shell 更改为它chsh username

答案2

以下是一步一步的指南,可帮助您:

  1. 用户 bob 对 /home/bob/uploads 的 SFTP 访问
  2. 将 bob 锁定在 SSH 之外
  3. 使用用户名/密码而不是密钥:

首先,编辑您的 /etc/ssh/sshd_config 文件:

sudo nano /etc/ssh/sshd

向下滚动并修改:

PasswordAuthentication yes

并在底部添加:

Match Group sftpusers
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no  

按 Ctrl-X 退出并保存。

现在添加用户:

sudo useradd bob
sudo passwd bob

现在添加组并禁用 ssh:

sudo groupadd sftpusers
sudo usermod  -g sftpusers bob
sudo usermod -s /usr/bin/rssh bob
sudo usermod -d /home/bob bob

现在设置权限:

sudo chown root:root /home/bob/
sudo chmod 755 /home/bob/
sudo mkdir /home/bob/uploads
sudo chown bob /home/bob/uploads

sudo service sshd restart

所有这些都是在以 root 用户身份登录时进行的(Amazon Linux AMI 上的 ec2-user)

相关内容