Điểm:1

SFTP thay đổi thư mục mặc định

lá cờ tn

Tôi đang thiết lập SFTP cho một nhóm người dùng mà tôi muốn chỉ có quyền truy cập SFTP, nhằm mục đích tải tệp lên máy chủ. Tôi đã tống giam chúng vào thư mục chính của chúng và đã chặn đăng nhập shell. Mỗi thư mục chính có một thư mục con để nhận tải lên. Tôi muốn các kết nối SFTP tự động chuyển sang thư mục tải lên này khi đăng nhập. Khá chuẩn.

tôi đang sử dụng ForceCommand chỉ thị để đạt được điều này thành công trên một máy chủ cũ.Tuy nhiên, trên máy chủ mới tôi đang chuẩn bị, điều này không hoạt động. Tại sao?

/etc/ssh/sshd_config.d/sftpgroup.conf
Nhóm đối sánh ftpgroup
  # Hai lệnh sau buộc ftpgroup phải chroot
  # và chỉ có sẵn SFTP. Không cần thiết lập chroot khác.
  ChrootDirectory /home/ftp_users/%u
  ForceCommand nội bộ-sftp -u 0002
  # Đối với chứng hoang tưởng bổ sung, không cho phép tất cả các loại chuyển tiếp cổng.
  AllowTcpForwarding không
  GatewayPorts không
  X11Số chuyển tiếp
  # Buộc ghi nhật ký cục bộ
  ForceCommand /usr/lib/openssh/sftp-server -l RỘNG RÃI
  # Thay đổi thư mục mặc định thành ~/upload
  ForceCommand cd /tải lên
/var/log/auth.log với LogLevel DEBUG3
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug1: userauth-request cho người dùng phương thức kết nối ssh dịch vụ myuser không có [preauth]
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug1: lần thử 0 thất bại 0 [preauth]
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: mm_getpwnamallow nhập [preauth]
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: mm_request_send nhập: nhập 8 [preauth]
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: mm_getpwnamallow: đang chờ MONITOR_ANS_PWNAM [preauth]
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: mm_request_receive_expect nhập: nhập 9 [preauth]
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: mm_request_receive đang nhập [preauth]
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: mm_request_receive đang vào
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: monitor_read: kiểm tra yêu cầu 8
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: mm_answer_pwnamallow
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug2: parse_server_config_depth: config xử lý lại config len 383
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug2: parse_server_config_depth: config /etc/ssh/sshd_config.d/sftpgroup.conf len 228
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: kiểm tra khớp cho 'Nhóm ftpgroup,!sftpgroup' người dùng myuser Host 1.2.3.4 addr 1.2.3.4 laddr 10.0.0.4 lport 22
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug1: user myuser does not match danh sách nhóm ftpgroup,!sftpgroup ở dòng 4
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: không tìm thấy kết quả khớp
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: kiểm tra khớp cho người dùng 'Nhóm ftpgroup' myuser Host 1.2.3.4 addr 1.2.3.4 laddr 10.0.0.4 lport 22
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug1: danh sách nhóm phù hợp với người dùng myuser ftpgroup ở dòng 9
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: tìm thấy kết quả khớp
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: /etc/ssh/sshd_config.d/sftpgroup.conf:12 setting ChrootDirectory /home/ftp_users/%u
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: /etc/ssh/sshd_config.d/sftpgroup.conf:13 setting ForceCommand internal-sftp -u 0002
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: /etc/ssh/sshd_config.d/sftpgroup.conf:15 cài đặt AllowTcpForwarding không
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: /etc/ssh/sshd_config.d/sftpgroup.conf:16 cài đặt GatewayPorts không
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: /etc/ssh/sshd_config.d/sftpgroup.conf:17 setting X11Forwarding no
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: /etc/ssh/sshd_config.d/sftpgroup.conf:21 setting ForceCommand cd /upload
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: mm_answer_pwnamallow: gửi MONITOR_ANS_PWNAM: 1
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: mm_request_send đang nhập: gõ 9
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug2: monitor_read: 8 được sử dụng một lần, tắt ngay bây giờ
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug2: input_userauth_request: thiết lập authctxt cho myuser [preauth]
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: mm_start_pam đang nhập [preauth]
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: mm_request_send nhập: nhập 100 [preauth]
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: mm_inform_authserv đang nhập [preauth]
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: mm_request_send nhập: nhập 4 [preauth]
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug2: input_userauth_request: thử phương thức none [preauth]
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: user_specific_delay: độ trễ cụ thể của người dùng 0,000 mili giây [preauth]
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: ensure_minimum_time_since: đã trôi qua 2,862 mili giây, trì hoãn 4,136 mili giây (yêu cầu 6,998 mili giây) [preauth]
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: mm_request_receive đang vào
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: monitor_read: kiểm tra yêu cầu 100
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug1: PAM: khởi tạo cho "myuser"
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug1: PAM: đặt PAM_RHOST thành "1.2.3.4"
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug1: PAM: đặt PAM_TTY thành "ssh"
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug2: monitor_read: 100 used once, disable now
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: mm_request_receive đang vào
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: monitor_read: kiểm tra yêu cầu 4
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: mm_answer_authserv: service=ssh-connection, style=, role=
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug2: monitor_read: 4 dùng một lần, tắt ngay
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: userauth_finish: fail partial=0 next methods="publickey,password" [preauth]
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: gửi gói: gõ 51 [preauth]
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: nhận gói: gõ 2 [preauth]
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: Đã nhận SSH2_MSG_IGNORE [preauth]
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: nhận gói: nhập 50 [preauth]
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug1: userauth-request cho người dùng dịch vụ myuser mật khẩu phương thức kết nối ssh [preauth]
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug1: lần thử 1 thất bại 0 [preauth]
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug2: input_userauth_request: thử mật khẩu phương thức [preauth]
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: mm_auth_password nhập [preauth]
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: mm_request_send nhập: gõ 12 [preauth]
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: mm_auth_password: đang chờ MONITOR_ANS_AUTHPASSWORD [preauth]
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: mm_request_receive_expect nhập: nhập 13 [preauth]
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: mm_request_receive đang nhập [preauth]
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: mm_request_receive đang vào
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: monitor_read: kiểm tra yêu cầu 12
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: PAM: sshpam_passwd_conv được gọi với 1 tin nhắn
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug1: PAM: xác thực mật khẩu được chấp nhận cho myuser
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: mm_answer_authpassword: gửi kết quả 1
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: mm_request_send đang nhập: gõ 13
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: mm_request_receive_expect đang nhập: gõ 102
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: mm_request_receive đang vào
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug1: do_pam_account: được gọi
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug2: do_pam_account: thông tin xác thực trong SSH_AUTH_INFO_0
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: PAM: do_pam_account pam_acct_mgmt = 0 (Thành công)
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: mm_request_send đang nhập: gõ 103
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: Mật khẩu được chấp nhận cho myuser từ cổng 1.2.3.4 55095 ssh2
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug1: monitor_child_preauth: myuser đã được xác thực bởi quy trình đặc quyền
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: mm_get_keystate: Chờ khóa mới
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: mm_request_receive_expect đang nhập: gõ 26
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: mm_request_receive đang vào
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: mm_get_keystate: CÓ khóa mới
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: mm_auth_password: người dùng đã xác thực [preauth]
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: user_specific_delay: độ trễ cụ thể của người dùng 0,000 mili giây [preauth]
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: ensure_minimum_time_since: đã trôi qua 7,172 mili giây, trì hoãn 6,825 mili giây (yêu cầu 6,998 mili giây) [preauth]
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: mm_do_pam_account đang nhập [preauth]
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: mm_request_send đang nhập: nhập 102 [preauth]
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: mm_request_receive_expect đang nhập: nhập 103 [preauth]
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: mm_request_receive đang nhập [preauth]
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: mm_do_pam_account trả về 1 [preauth]
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: gửi gói: gõ 52 [preauth]
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: mm_request_send nhập: gõ 26 [preauth]
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: mm_send_keystate: Trạng thái gửi xong [preauth]
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug1: monitor_read_log: nhật ký con fd đã đóng
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: ssh_sandbox_parent_finish: đã hoàn thành
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug1: PAM: thiết lập thông tin đăng nhập
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: PAM: mở phiên
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug2: do_pam_session: thông tin xác thực trong SSH_AUTH_INFO_0
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: pam_unix(sshd:session): phiên mở cho người dùng myuser(uid=1001) bởi (uid=0)
Ngày 9 tháng 3 15:18:03 MyServer systemd-logind[607]: Phiên mới 530 của người dùng myuser.
Ngày 9 tháng 3 15:18:03 MyServer systemd: pam_unix(systemd-user:session): phiên mở cho người dùng myuser(uid=1001) bởi (uid=0)
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: PAM: sshpam_store_conv được gọi với 1 tin nhắn
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: debug3: PAM: sshpam_store_conv được gọi với 1 tin nhắn
Ngày 9 tháng 3 15:18:03 MyServer sshd[393644]: Người dùng con đang sử dụng pid 393672
Ngày 9 tháng 3 15:18:03 MyServer sshd[393672]: debug1: Hỗ trợ SELinux bị tắt
Ngày 9 tháng 3 15:18:03 MyServer sshd[393672]: debug1: PAM: thiết lập thông tin đăng nhập
Ngày 9 tháng 3 15:18:03 MyServer sshd[393672]: debug3: safe_chroot: kiểm tra '/'
Ngày 9 tháng 3 15:18:03 MyServer sshd[393672]: debug3: safe_chroot: kiểm tra '/home/'
Ngày 9 tháng 3 15:18:03 MyServer sshd[393672]: debug3: safe_chroot: kiểm tra '/home/ftp_users/'
Ngày 9 tháng 3 15:18:03 MyServer sshd[393672]: debug3: safe_chroot: kiểm tra '/home/ftp_users/myuser'
Ngày 9 tháng 3 15:18:04 MyServer sshd[393644]: debug3: mm_request_receive đang vào
Ngày 9 tháng 3 15:18:04 MyServer sshd[393644]: debug3: monitor_read: kiểm tra yêu cầu 113
Ngày 9 tháng 3 15:18:04 MyServer sshd[393644]: debug3: mm_answer_audit_command đang nhập
ssh -V

Máy chủ cũ:

  • OpenSSH_7.9p1 Debian-10+deb10u2, OpenSSL 1.1.1d 10 tháng 9 năm 2019

Máy chủ mới:

  • OpenSSH_8.4p1 Debian-5, OpenSSL 1.1.1k Ngày 25 tháng 3 năm 2021

Cập nhật

Hóa ra trên hệ thống cũ, điều này thực sự hoạt động do các thư mục chính và liên kết tượng trưng bị thao túng, chứ không phải do ForceCommand chỉ thị trên hệ thống đó (mặc dù chỉ thị đó tồn tại).

ln -s /home/ftp_users/myuser /home/myuser
usermod -d /home/myuser myuser
ln -s ../upload /home/ftp_users/myuser/home/myuser

Vì vậy, khi người dùng đăng nhập và thay đổi thành ~ nó đi đến /nhà/người dùng của tôi đó là một liên kết tượng trưng cho /tải lên. Khi khớp thiết lập thư mục chính với hệ thống cũ, hệ thống mới hiện định tuyến chính xác khi đăng nhập. Hơi hack và chắc chắn là dưới mức tối ưu (đã cố gắng tránh nó), nhưng nó "hoạt động".

Vì vậy, sau đó câu hỏi trở thành, tại sao không ForceCommand ghi đè cái này? Là nó thực hiện ở tất cả? Làm thế nào tôi có thể nói?

lá cờ cn
Các phiên bản giữa máy chủ cũ và máy chủ mới có khác nhau không? Bạn có thể tăng cấp nhật ký cho SSHD và nhận một số đầu ra gỡ lỗi không?
lá cờ tn
Cảm ơn shearn89 đã nhận xét. Đã cập nhật bài đăng với nhật ký và thông tin phiên bản. Tôi không thấy bất cứ điều gì trong nhật ký liên quan đến ForceCommand ngoài khi nó xuất hiện trong cấu hình, trừ khi tôi không nhận ra nó?
lá cờ cn
Tôi tự hỏi nếu bạn chỉ có thể chỉ định `ForceCommand` một lần. Điều gì xảy ra nếu bạn đặt tất cả các lệnh trên một dòng, nối với `;`?
lá cờ tn
Gợi ý thú vị. Nhưng tiếc là không gặp may. Bây giờ tôi chỉ nhận được "LỖI FATAL: Đã nhận được phần cuối tệp không mong muốn từ máy chủ SFTP" từ FileZilla khi tôi cố gắng kết nối. Tôi cho rằng `internal-sftp` là một lệnh đặc biệt không thể liên kết thực sự với các lệnh khác?
Fjor avatar
lá cờ do
Có thể `ForceCommand` đầu tiên thực thi `sftp-server` và cho phép nó kiểm soát kết nối, vì vậy `ForceCommand` tiếp theo sẽ được thực thi sau khi `sftp-server` đóng. Nếu đúng như vậy, `sftp-server` chấp nhận tùy chọn `-d DIR` để thay đổi thư mục bắt đầu bên trong kết nối.
lá cờ tn
Tôi đã thử nó với lệnh `sftp-server` đã được nhận xét và không có sự khác biệt. Tuy nhiên, gợi ý của bạn khiến tôi nghĩ rằng có lẽ tôi nên xem xét lệnh `internal-sftp` và xem liệu tôi có thể thêm một số đối số vào đó không. Cảm ơn vì ý tưởng.
lá cờ tn
Gặp khó khăn trong việc tìm cú pháp cho `internal-sftp` nhưng sau đó phát hiện ra [bài đăng này](https://superuser.com/a/1114989) nói rằng `internal-sftp` chia sẻ các tùy chọn giống như `sftp-server`. Tốt để biết. (Điều này có được ghi lại ở bất cứ đâu không? Nếu vậy, tôi không tìm thấy nó.) Đề xuất của bạn hoạt động rất tốt, @Fjor, thay vào đó, tôi chỉ phải sử dụng nó trên `internal-sftp`. Sẽ vui lòng chấp nhận nếu bạn muốn gửi nó dưới dạng câu trả lời.
Điểm:1
lá cờ do

Với máy chủ sftp bạn có thể thêm tùy chọn đường dẫn -d để thay đổi thư mục bắt đầu khi đăng nhập. Dòng cấu hình phải là:

Hệ thống con sftp /usr/lib/openssh/sftp-server -l VERBOSE -d /upload

Trong các phiên bản sau của OpenSSH, chức năng máy chủ SFTP có sẵn trong quá trình làm mặc định hoặc bằng cách sử dụng nội-sftp chỉ báo làm lệnh để chạy.

@người dùng2100826 được xác nhận bởi bài này điều đó nội-sftpmáy chủ sftp chia sẻ các tùy chọn dòng lệnh giống nhau (nhưng tôi không thể tìm thấy điều này được chỉ ra rõ ràng trong tài liệu liên quan Đàn ông trang). Vui lòng tư vấn man sftp-server để kiểm tra việc sử dụng Thư mục Chroot với ForceCommand hoặc hệ thống con.

Vì vậy, hành vi mong muốn cũng có thể được cấu hình theo dòng:

Hệ thống con sftp internal-sftp -l VERBOSE -d /upload

Ngoài ra, vui lòng kiểm tra câu trả lời này.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.