sshfs com x encaminhamento?

1

Estou usando o sshfs para montar diretórios de servidores no meu laptop.

Eu também tenho o seguinte no meu ~ / .ssh / config: ControlMaster auto

Eu configurei isso porque ele mantém uma única conexão ssh ativa sempre que eu ssh em um servidor. Eu faço isso particularmente para navegação rápida no emacs usando vagabundo.

Como tenho o sshfs no meu / etc / fstab, a conexão ssh do sshfs é aquele que fica vivo. Muitas vezes eu também preciso do encaminhamento do X11 (ssh -X -Y -C), e desde que eu estou sempre usando a conexão original de sshfs, o X11 não é encaminhado.

O X11 funciona quando eu removo a montagem sshfs do meu fstab, e eu ssh em meus servidores manualmente com a opção -X -Y -C.

Existe uma maneira de ativar -X -Y -C (ou os gostos) para sshfs? Tentei adicionar ForwardX11 sim ForwardX11Trusted sim

em ~ / .ssh / config e / etc / ssh / ssh_config para forçar a opção de sempre estar ligado (pode ter problema de segurança). No entanto, sshfs em / etc / fstab faz não pegue isso.

Você tem alguma sugestão? Obrigado!

    
por Vinh Nguyen 12.05.2011 / 19:43

3 respostas

4

A maneira de contornar este problema é usar o script no lugar do comando ssh.

man pages do sshfs (pelo menos desde 2.0 de abril de 2008)

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

Assim:

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

E aqui está o 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[@]}"

Adicionar algo assim ao fstab deve permitir a montagem automática do sshfs e ativar encaminhamento. Note que quando o mount acontece normalmente é usuário root, então você pode ter que fazer mudanças apropriadas no sshcmd (veja a última linha do sshcmd).

sshfs#USERID@HOST:/TARGETPATH /MOUNT_POINT fuse _netdev,user,ssh_command=/path/to/sshcmd0-Y0-X 0 0
    
por 12.01.2012 / 08:48
1

Tente isto:

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

Ontem eu tive exatamente o mesmo problema. Eu modifiquei sshcmd para que ele também tente entrar em contato com o usuário ssh-agent . Obrigado Manwë!

#!/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[*]}"
    
por 25.07.2013 / 13:57