Câu trả lời:
Trên Debian, dựa trên Ubuntu, người dùng dữ liệu www có / bin / sh làm vỏ mặc định. Để bật SFTP, bạn có thể tạo /var/www/.ssh/authorized_keys
với khóa công khai trong đó. Các quyền trên /var/www/.ssh
phải là 700 và các quyền trên tệp ủy quyền phải là 600. Bạn sẽ muốn thêm các điều sau vào cấu hình http của mình để cấm truy cập vào thư mục này.
<Directory /var/www/.ssh>
Order Deny,Allow
Deny from all
</Directory>
Bạn có thể xác minh cài đặt người dùng dữ liệu www (thư mục chính, shell, v.v.) bằng cách sử dụng getent passwd www-data
.
Đảm bảo sshd_config của bạn có Subsystem sftp /usr/lib/openssh/sftp-server
và có thể bạn cũng muốn đặt PasswordAuthentication no
.
Đây là loại không an toàn. Tôi sẽ đề nghị bạn tải lên một khu vực trung gian bằng cách sử dụng một người dùng khác và cron
thỉnh thoảng thực hiện một công việc để di chuyển công cụ nơi nó tin tưởng và thay đổi quyền của nó cho phù hợp.
Nếu bạn thực sự khăng khăng đăng nhập với tư cách www-data
, bạn phải sử dụng khóa riêng ssh để làm điều đó (phiên bản AFAIK EC2 chỉ cho phép xác thực khóa). Bạn cũng phải kiểm tra xem www-data
có một vỏ hợp lệ trên /etc/passwd
và một thư mục nhà hợp lệ.
Cuối cùng, bạn cũng có thể thử một số giải pháp của câu hỏi này .
Đăng nhập dưới dạng dữ liệu www cho scp là lãng phí thời gian.
Đối với lệnh scp tại sao bạn không sử dụng ssh2_scp_send
để truyền tệp, nó đơn giản và không cần bạn thêm-ssh hoặc tạo khóa chung cho dữ liệu www của người dùng
ví dụ
ssh2_scp_send($connection, '/directory/filename', '/remotedirectory/filename', 0644);
nên làm việc