sftp 명령은 원격 사용자가 원격 sftp-server 실행 파일을 선택하고 선택적으로 프로세스에서 sudo로 업그레이드 할 수있는 서브 시스템 옵션 (-s)을 지원합니다.
sftp -s "/usr/bin/sudo /usr/libexec/openssh/sftp-server" xxx.yyy.zzz.aaa
이 명령은 ~ / .ssh / config의 ssh 클라이언트 옵션을 연기하여 pubkey 및 사용자 정의 포트 및 사용자 설정을 투명하게 사용할 수 있도록합니다.
그러나 subsystem
sftp에 고유 한 것으로 보이므로 구성 파일에 설정되어 있지 않으므로 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”로 제어되는 것처럼 보입니다.
답변
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 연결이 루트 권한으로 실행을 시도하므로 파일에 대한 루트가 아닌 액세스를 차단한다는 것입니다.