![如何设置 sftp 用户使用密码登录 EC2 ubuntu 服务器?](https://linux22.com/image/538260/%E5%A6%82%E4%BD%95%E8%AE%BE%E7%BD%AE%20sftp%20%E7%94%A8%E6%88%B7%E4%BD%BF%E7%94%A8%E5%AF%86%E7%A0%81%E7%99%BB%E5%BD%95%20EC2%20ubuntu%20%E6%9C%8D%E5%8A%A1%E5%99%A8%EF%BC%9F.png)
我在 EC2 实例上运行了一个 Ubuntu 服务器。要登录该服务器,我使用证书文件,无需任何密码。
我已经安装并配置了 vsftpd,并创建了一个用户(我们称他为“testuser”),我为其设置了一个 /bin/false ssh 终端,因此它只能通过 sftp 连接并上传/访问其主目录中的文件。
但是 - 当我尝试从我的电脑连接到服务器时,运行
sftp testuser@my-ec2-server
我明白了
权限被拒绝(公钥)。
连接已关闭
消息,所以无法登录。
我怎样才能仅删除此用户的证书要求(这意味着“ubuntu”用户仍然必须使用证书文件通过 ssh 登录),以便普通 sftp 客户端能够使用用户名和密码进行连接?
谢谢。
PS 在微型实例上使用规范的 64 位 Ubuntu Server 10.10 官方 AMI。
答案1
为了实现你的愿望,你需要做两件不同的事情
- 更改 sshd 配置以接受密码
首先我要说的是,这样做是个坏主意,我宁愿为你的用户生成证书,而不是激活密码,不过如果你想这样做,只需编辑/etc/ssh/sshd_config
和更改或取消注释它,这样它就会显示PasswordAuthentication yes
。完成后,重新启动 sshdservice ssh restart
- 让用户只使用 sftp 进行 FTP 操作,无需 shell
为了实现这一点,你需要安装 rsh(限制 shell)并将用户 shell 更改为它chsh username
答案2
以下是一步一步的指南,可帮助您:
- 用户 bob 对 /home/bob/uploads 的 SFTP 访问
- 将 bob 锁定在 SSH 之外
- 使用用户名/密码而不是密钥:
首先,编辑您的 /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)