구성 파일에서 sftp -s 하위 시스템 옵션을 설정하는 방법

구성 파일에서 sftp -s 하위 시스템 옵션을 설정하는 방법

sftp 명령은 하위 시스템 옵션(-s)을 지원하므로 원격 사용자가 원격 sftp-server 실행 파일을 선택하고 선택적으로 프로세스 중에 sudo로 업그레이드할 수 있습니다.

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

이 명령은 ~/.ssh/config의 ssh 클라이언트 옵션을 존중하므로 공개 키와 사용자 정의 포트 및 사용자 설정을 투명하게 사용할 수 있습니다.

다만, subsystemsftp 전용인 것 같아서 config 파일에는 설정되지 않고, sftp용 명령줄 옵션으로 설정해야 할 것 같습니다.

그러나 일부 도구는 하위 시스템 옵션을 설정할 수 없으므로 사용자 액세스가 불가능하도록 sftp 호출을 래핑합니다.

일반적으로 openssh sftp에 대해 이 옵션을 설정하는 데 사용할 수 있는 일부 구성 옵션 파일이 있습니까?

gnome nautilus가 파일 관리자 통합을 위해 sftp를 호출하는 방식에 영향을 미치는 일부 구성 파일이 있습니까?


고쳐 쓰다해킹이 가능하지만 작동하는 솔루션은 다음과 같습니다.

그래서 sftp에는 옵션에 대한 명확한 구성 파일이 없다는 것이 밝혀졌습니다. 그래서 저는 결국 제가 선택한 호스트에 대한 옵션을 제 경로에 넣어서 명시적으로 추가하도록 일반 래퍼 스크립트를 수정했습니다.

#!/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

하지만sudoers 파일에 따르면 일반적으로 sudo를 실행하려면 tty가 필요하므로 ssh에 "-t" 옵션을 전달해야 합니다. ssh_config 또는 ~/.ssh/config 파일에 문서화된 ssh 클라이언트 명령에 대한 구성 옵션이 없습니다. ㅋ.

그래서 제공하기 위해 또 다른 래퍼 스크립트를 작성했습니다.

#!/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"

그러나 현재 ~/bin/ssh 래퍼 파일은 sftp에 하드코딩되어 있고 "-S" 옵션으로 제어되는 것처럼 보이므로 sftp에서 내 ~/bin/ssh 래퍼 파일을 사용하도록 할 수 없습니다.

답변1

ssh_config(5)매뉴얼 페이지 에 따르면 sshd_config구성 파일에서 경로를 구성할 수 있습니다.

 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.

따라서 간단히 다음과 같이 할 수 있는 것 같습니다.

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

이 구성은 분명히섬기는 사람, 클라이언트 구성에는 없습니다. 이것이 당신이 찾고 있는 것입니까? 단점은 분명모든sftp 연결은 루트 권한으로 실행을 시도하므로 루트가 아닌 파일에 대한 액세스가 중단됩니다.

관련 정보