Я пытался настроить sftp в AWS EC2, следуя инструкциям в https://silicondales.com/tutorials/aws-ec2-tutorials/setup-ftp-sftp-aws-ec2-instance/
Я сделал следующие шаги
Ниже изменения внесены в /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
pasv_enable=YES
pasv_min_port=1024
pasv_max_port=1048
pasv_address=[MY PUBLIC IP]
chroot_local_user=YES
Создал нового пользователя и установил пароль
adduser silicondales
passwd silicondales
Перезагрузил /etc/init.d/vsftpd restart. Это успешно, когда я получаю сообщение
После всего этого я пытаюсь подключиться с моей локальной машины
sftp -oPort=1024 <username>:<password>@<public ip address>
и получение ssh: connect to host <Public_IP> port 1024: Connection refused
ошибка Я не мог понять проблему. Пожалуйста, помогите мне решить эту проблему
Хорошо, чтобы ответить на этот вопрос, нужно кое-что уточнить: vsftpd
реализует протокол FTP. sftp
не реализовать протокол FTP. Несмотря на то, что в названии есть «ftp», он имеет мало общего с FTP, кроме эмуляции его поведения на стороне клиента. Если вы хотите использовать sftp, вам не нужен vsftpd. Скорее, sftp
использует SSH-сервер, который, вероятно, уже присутствует на вашем сервере.
С точки зрения сети и безопасности ssh / sftp являются много безопаснее и удобнее, чем ftps
(что может предоставить vsftpd), и если у вас нет веской причины не использовать sftp, просто брось vsftpd
. Тебе это не нужно.
SSH, который уже запущен, предоставляет SFTP. Тот же ключ, с которым вы входите в SSH, позволяет входить в систему по SFTP. Сервис SFTP предоставляется SSH, тем же программным обеспечением, которое позволяет вам войти в систему.
Вы можете добавлять пользователей и разрешать им входить в систему через SFTP. Это, например, упрощает создание пользователя, который имеет доступ только к вашему корневому веб-каталогу. У меня есть статья об этом для Amazon Linux на мой блог, который включает несколько изображений. Основные части
Создать нового пользователя
sudo su
sudo useradd fred
passwd fred
Создайте новую пару ключей
su fred
ssh-keygen -f rsa
mkdir .ssh
touch .ssh/authorized_keys
chmod go-w ~/
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
cat fred.pub >> /home/fred/.ssh/authorized_keys
Разрешить пользователю войти в систему
vi /etc/ssh/sshd_config
PasswordAuthentication no
AllowUsers ec2-user fred