小编Tom*_*Tom的帖子

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

sftp 命令支持一个子系统选项 (-s),它允许远程用户选择远程 sftp-server 可执行文件,并在这个过程中可选地升级到 sudo;

sftp -s "/usr/bin/sudo /usr/libexec/openssh/sftp-server" xxx.yyy.zzz.aaa
Run Code Online (Sandbox Code Playgroud)

此命令遵循 ~/.ssh/config 中的 ssh 客户端选项,允许透明使用公钥和自定义端口和用户设置。

然而,它subsystem似乎是 sftp 特定的,因此它没有在配置文件中设置,它似乎必须设置为 sftp 的命令行选项。

然而,一些工具包装了 sftp 调用,因此无法设置子系统选项,因此卡住了用户访问。

是否有一些配置选项文件我可以用来为openssh sftp设置这个?

是否有一些配置文件会影响 gnome nautilus 调用 sftp 以进行文件管理器集成的方式?


更新可能的hacky-but-functioning解决方案是......

所以事实证明没有明显的配置文件 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
Run Code Online (Sandbox Code Playgroud)

然而, …

sftp sudo openssh sshfs

11
推荐指数
1
解决办法
7385
查看次数

在任何 shell 或 sudo、pam.d 更改之前,Linux 中设置的用户 PATH 在哪里?

我注意到,在 Raspbian 中,如果我在不使用 shell 的情况下通过 ssh 运行命令,我会得到以下信息$PATH

$ ssh pi@raspberrypi env | grep PATH
PATH=/usr/local/bin:/usr/bin:/bin:/usr/games
Run Code Online (Sandbox Code Playgroud)

我找不到这条路径的实际设置位置。

我假设 或/etc/profile/etc/bashrc没有来源,因为它不是登录,也不是交互式 shell。看起来它可能会访问bashrc,但不会走得太远;

# cat /etc/bash.bashrc 
# System-wide .bashrc file for interactive bash(1) shells.

# If not running interactively, don't do anything
[ -z "$PS1" ] && return
Run Code Online (Sandbox Code Playgroud)

pam
但是看起来会话将通过 pam 进行处理,并且表明/etc/pam.d/sshd/etc/environment/etc/security/pam_env.conf用于/etc/default/locale设置环境变量;

# Read environment variables from /etc/environment and
# /etc/security/pam_env.conf.
session    required     pam_env.so # [1]
# In …
Run Code Online (Sandbox Code Playgroud)

linux environment-variables

5
推荐指数
1
解决办法
1020
查看次数

标签 统计

environment-variables ×1

linux ×1

openssh ×1

sftp ×1

sshfs ×1

sudo ×1