web-dev-qa-db-ja.com

構成ファイルでsftp-sサブシステムオプションを設定する方法

Sftpコマンドは、リモートユーザーがリモートのsftp-server実行可能ファイルを選択できるようにするサブシステムオプション(-s)をサポートし、オプションでそのようなプロセスで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が必要なので、「-t」オプションをsshに渡して、何を推測する必要がありますか? 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"

ただし、sftpにハードコードされてオプション「-S」で制御されているように見えるため、sftpで〜/ bin/sshラッパーファイルを使用するのに問題があります。

11
Tom H

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"

この構成は、クライアント構成ではなく、明らかにserverになります。これはあなたが探していたものですか?明らかに、欠点はevery sftp接続がroot権限で実行しようとするため、ファイルへの非rootアクセスが破壊されることです。

2
larsks