구성 파일에서 sftp -s subsystem 옵션을 설정하는 방법


11

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

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

이 명령은 ~ / .ssh / config의 ssh 클라이언트 옵션을 연기하여 pubkey 및 사용자 정의 포트 및 사용자 설정을 투명하게 사용할 수 있도록합니다.

그러나 subsystemsftp에 고유 한 것으로 보이므로 구성 파일에 설정되어 있지 않으므로 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가 필요하므로 "-t"옵션을 ssh에 전달하고 무엇을 추측해야합니까? ssh_config 또는 ~ / .ssh / config 파일에서 작동하는 문서화 된 ssh client 명령에 대한 구성 옵션이 없습니다. ㅋ.

그래서 나는 그것을 제공하기 위해 다른 래퍼 스크립트를 작성합니다 ....

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

sftp에서 ~ / bin / ssh 래퍼 파일을 사용하도록 sftp를 가져 오는 데 문제가 있습니다. sftp로 하드 코딩되어 있고 옵션 "-S"로 제어되는 것처럼 보입니다.


당신의 목표는 무엇입니까? 나는 당신의 명령의 이점을 이해하지 못합니다.
jirib

3
기본 빌드에 따라 루트 사용자 로그인없이 ssh를 실행하므로 sudo 사용자는 gnome gvfs와 통합되는 도구를 통해 루트 권한으로 파일을 변경할 수 있습니다.
Tom H

답변:


2

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 연결이 루트 권한으로 실행을 시도하므로 파일에 대한 루트가 아닌 액세스를 차단한다는 것입니다.


예, 고객 측을 찾고있었습니다. 질문을 업데이트 한 아이디어가 있지만.
Tom H

흠, GUI와 명령 줄 답변을 정말로 갖고 싶습니다. larsk가 올바른 행에 있다고 생각하지만 원격 서버의 하위 시스템 명령은 자체적으로 로그인을 시도하는 사용자의 권한을 "알 수"있거나 정상적으로 (및 자동으로 표준 sftp 로그인으로 장애 복구합니다.
Julian Knight

물론 Windows 상자에서 WinSCP를 사용할 수도 있습니다 !! 그래도 멍청한 것 같습니다.
Julian Knight
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.