Cách đặt tùy chọn hệ thống con sftp-s trong tệp cấu hình


11

Lệnh sftp hỗ trợ tùy chọn hệ thống con (-s) cho phép người dùng từ xa chọn máy chủ sftp từ xa thực thi và tùy chọn nâng cấp lên sudo trong quy trình như vậy;

sftp -s "/usr/bin/sudo /usr/libexec/openssh/sftp-server" xxx.yyy.zzz.aaa

Lệnh này trì hoãn các tùy chọn máy khách ssh trong ~ / .ssh / config cho phép sử dụng pubkey và tùy chỉnh cài đặt cổng và người dùng.

Tuy nhiên subsystemdường như là cụ thể sftp, và do đó nó không được đặt trong tệp cấu hình và có vẻ như nó phải được đặt làm tùy chọn dòng lệnh cho sftp.

Tuy nhiên, một số công cụ bao bọc lời gọi sftp để không thể đặt tùy chọn hệ thống con và do đó bị kẹt với quyền truy cập của người dùng.

Có một số tệp tùy chọn cấu hình mà tôi có thể sử dụng để đặt tệp này cho openssh sftp không?

Có một số tệp cấu hình để thực hiện cách gnome nautilus gọi sftp để tích hợp trình quản lý tệp của nó?


Cập nhật giải pháp hacky nhưng hoạt động có thể là ...

Vì vậy, hóa ra là không có tệp cấu hình rõ ràng mà sftp sẽ sử dụng cho các tùy chọn nên cuối cùng tôi đã sửa đổi tập lệnh trình bao bọc chung để thêm tùy chọn rõ ràng cho các máy chủ đã chọn bằng cách đặt tệp này vào đường dẫn của tôi;

#!/bin/bash
#  Generic shell wrapper that performs an operation

OPERATION=/usr/bin/sftp
args=("$@")
#the final arg should contain a hostname of the form [user@]host[:path]
case "${args[@]: -1}" in
    myserver.com)
    exec $OPERATION -s "/usr/bin/sudo /usr/libexec/openssh/sftp-server" "$args"
    ;;
*)
   exec $OPERATION "$args" 
    ;;
esac

Tuy nhiên, tùy thuộc vào tệp sudoers của bạn, thông thường để chạy sudo yêu cầu một tty, vì vậy bạn phải chuyển tùy chọn "-t" cho ssh, và đoán xem? không có tùy chọn cấu hình cho lệnh máy khách ssh được ghi lại hoạt động trong các tệp ssh_config hoặc ~ / .ssh / config. haha

Vì vậy, tôi viết một kịch bản trình bao bọc khác để cung cấp rằng ....

#!/bin/bash
#  Generic shell wrapper that performs an operation

OPERATION=/usr/bin/ssh
args=("$@")
#locating the hostname is not so simple with ssh
exec $OPERATION -tt "$args"

mặc dù, hiện tại tôi đang gặp sự cố khi sử dụng sftp để sử dụng tệp bao bọc ~ / bin / ssh của mình, vì nó dường như được mã hóa cứng thành sftp và được điều khiển bởi một tùy chọn "-S"


Mục tiêu của bạn là gì? Tôi không hiểu bất kỳ lợi ích của lệnh của bạn.
jirib

3
Tôi chạy ssh mà không có thông tin đăng nhập người dùng root, theo bản dựng cơ sở của chúng tôi, vì vậy nó cho phép người dùng sudo thay đổi các tệp có quyền root thông qua các công cụ tích hợp với gvfs gnome.
Tom H

Câu trả lời:


2

Theo ssh_config(5)trang man, bạn có thể định cấu hình đường dẫn trong sshd_configtệp cấu hình:

 Subsystem
         Configures an external subsystem (e.g. file transfer daemon).
         Arguments should be a subsystem name and a command (with optional
         arguments) to execute upon subsystem request.

Vì vậy, có vẻ như bạn có thể đơn giản làm điều này:

Subsystem sftp /usr/libexec/openssh/sftp-server -s "/usr/bin/sudo /usr/libexec/openssh/sftp-server"

Cấu hình này rõ ràng đi trên máy chủ , không phải trong cấu hình máy khách. Đây có phải là những gì bạn đang tìm kiếm? Rõ ràng, nhược điểm là mọi kết nối sftp sẽ cố chạy với quyền root, do đó, điều này sẽ phá vỡ quyền truy cập không root vào các tệp của bạn.


vâng, tôi đang tìm kiếm một cái gì đó phía khách hàng Mặc dù tôi có một ý tưởng mà tôi đã cập nhật câu hỏi với.
Tom H

Hmm, tôi thực sự muốn có một GUI cũng như câu trả lời dòng lệnh. Tôi nghĩ rằng larsks là đúng dòng nhưng tôi nghĩ rằng lệnh hệ thống con trên máy chủ từ xa cần phải là một tập lệnh mà chính nó có thể "biết" các quyền của người dùng đang cố gắng đăng nhập, hoặc có thể duyên dáng (và âm thầm) không trở lại đăng nhập sftp tiêu chuẩn.
Julian Knight

Hoặc, tất nhiên, tôi chỉ có thể sử dụng WinSCP trên hộp Windows !! Có vẻ như daft mặc dù không.
Julian Knight
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.