1

Я использую sshfs для монтирования каталогов с серверов на моем ноутбуке.

В моем ~/.ssh/config также есть следующее: ControlMaster auto

Я установил это, потому что он поддерживает одно соединение ssh, когда я захожу на сервер. Я делаю это особенно для быстрого просмотра в emacs с использованием tramp.

Поскольку в моем /etc /fstab есть sshfs, соединение ssh от sshfs остается тем, которое остается в живых. Часто мне также требуется пересылка X11 (ssh -X -Y -C), и, поскольку я всегда использую исходное соединение от sshfs, X11 не пересылается.

X11 работает, когда я удаляю монтирование sshfs из своего fstab и вручную подключаю ssh к своим серверам с опцией -X -Y -C.

Есть ли способ включить -X -Y -C (или лайки) для sshfs? Я пытался добавить ForwardX11 да ForwardX11Trusted да

в ~/.ssh/config и /etc /ssh /ssh_config, чтобы опция всегда была включена (может быть проблема безопасности). Однако sshfs в /etc /fstab не подхватывает это.

У вас есть какие-нибудь предложения? Спасибо!

3 ответа3

4

Способ обойти эту проблему - использовать скрипт вместо команды ssh.

справочные страницы sshfs (как минимум с 2 апреля 2008 г.)

-o ssh_command=CMD
  execute CMD instead of 'ssh'

Как это:

sshfs user@remote: mountpoint -o ssh_command='/path/to/sshcmd -Y -X -C '

И вот sshcmd

#!/bin/bash

# declare array for ssh options
declare -a CLEANED_SSH_OPTS
declare -a ADD_OPTIONS

# add options to be automatically added to the ssh command here.
# example
#ADD_OPTIONS=( '-C' )
# empty default
ADD_OPTIONS=(  )

for OPT in "$@"; do 
  # add list of values to be removed
  # from sshfs ssh options
  case $OPT in
    "-x")
     # this and these like this will be removed
    ;;
    "-a")
    ;;
    "-oClearAllForwardings=yes")
    ;;
    *)
      # These are ok.. add
      NUM=${#CLEANED_SSH_OPTS[@]}
      CLEANED_SSH_OPTS[$NUM]="$OPT"
    ;;
  esac
done

# Start ssh with CLEANED options
exec ssh ${ADD_OPTIONS[@]} ${CLEANED_SSH_OPTS[@]}
# replace above exec with the next one if you ssh tunneling to run as your 
# local user. Like when using automatic mounts from fstab.
# Please note that this has some extra security issues.
#exec su YourUserName -c "ssh ${ADD_OPTIONS[@]} ${CLEANED_SSH_OPTS[@]}"

Добавление чего-то подобного в fstab должно позволить автоматически монтировать sshfs и включить пересылку. Обратите внимание, что при монтировании обычно это пользователь root, поэтому вам может потребоваться внести соответствующие изменения в sshcmd (см. Последнюю строку sshcmd).

sshfs#USERID@HOST:/TARGETPATH /MOUNT_POINT fuse _netdev,user,ssh_command=/path/to/sshcmd\040-Y\040-X 0 0
1

Попробуй это:

sshfs -ossh_command="ssh -A me@host1_wan_ip ssh $@" me@host2_lan_ip:/ /media/me/mount1
0

Вчера у меня была точно такая же проблема. Я изменил sshcmd так, что теперь он также пытается связаться с ssh-agent . Спасибо, Манве!

#!/bin/bash
# Open a ssh connection as a given user, thus using his/hers authentication
# agent and/or config files.
: ${ADDOPTS:="-2Ax"}
: ${LOCAL:="kreator"}
export SSH_AUTH_SOCK=$(find /tmp/ssh-* -type s -user ${LOCAL} -name agent* | tail -1)
declare -a options=( $* )

# Remove unwanted options
for (( i=0,fin=${#options[*]} ; i < fin ; i++ ))
do
    case ${options[$i]} in
            (-a|-oClearAllForwardings=*)    unset options[$i]
                                            ;;
    esac
done

exec /bin/su ${LOCAL} -c "$(which ssh) ${ADDOPTS} ${options[*]}"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .