如何在配置文件中设置sftp -s子系统选项


11

sftp命令支持子系统选项(-s),该选项允许远程用户选择远程sftp-server可执行文件,并可以选择在此过程中升级到sudo。

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,因此您必须将ssh传递“ -t”选项,然后您猜怎么着?没有ssh客户端命令的配置选项,该命令在ssh_config或〜/ .ssh / config文件中有效。哈哈。

因此,我编写了另一个包装器脚本来提供...。

#!/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中并由选项“ -S”控制


你的目标是什么?我不明白您的命令有什么好处。
jirib

3
按照我们的基本构建,我在没有root用户登录的情况下运行ssh,因此它允许sudo用户通过与gnome gvfs集成的工具对具有root权限的文件进行更改。
汤姆H

Answers:


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连接都将尝试以root特权运行,因此这将破坏对文件的非root访问。


是的,我正在寻找客户端。虽然我有一个想法,但我已经更新了这个问题。
汤姆H

嗯,我真的很想拥有一个GUI以及命令行答案。我认为larsk在正确的位置,但我认为远程服务器上的子系统命令必须是一个脚本,该脚本本身可以“知道”尝试登录的用户的权限,或者可以优雅地(和静默)故障回复到标准sftp登录。
朱利安·奈特

或者,当然,我可以在Windows机器上使用WinSCP !!似乎很愚蠢,虽然不是。
朱利安·奈特
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.