sshfs LocalForward sem arquivo de configuração

3

Estou tentando adicionar o "portforwarding" aos meus sshfs-mount-scripts:

sshfs tim@devserver1:/ /home/tim/mnt/devserver1/ 
-o SSHOPT=LocalForward 127.0.0.5:3306 127.0.0.1:3306

Até agora, falhei ao usar a sintaxe correta. Usar colchetes ou vírgulas em vez de espaços não funcionou.

    
por tiMbeRdroP 16.01.2014 / 11:50

1 resposta

5

Infelizmente, isso não é possível com -o . A lista de ssh opções suportadas por sshfs pode ser encontrada na fonte código :

static const char *ssh_opts[] = {
        "AddressFamily",
        "BatchMode",
        "BindAddress",
        "ChallengeResponseAuthentication",
        "CheckHostIP",
        "Cipher",
        "Ciphers",
        "Compression",
        "CompressionLevel",
        "ConnectionAttempts",
        "ConnectTimeout",
        "ControlMaster",
        "ControlPath",
        "GlobalKnownHostsFile",
        "GSSAPIAuthentication",
        "GSSAPIDelegateCredentials",
        "HostbasedAuthentication",
        "HostKeyAlgorithms",
        "HostKeyAlias",
        "HostName",
        "IdentitiesOnly",
        "IdentityFile",
        "KbdInteractiveAuthentication",
        "KbdInteractiveDevices",
        "LocalCommand",
        "LogLevel",
        "MACs",
        "NoHostAuthenticationForLocalhost",
        "NumberOfPasswordPrompts",
        "PasswordAuthentication",
        "Port",
        "PreferredAuthentications",
        "ProxyCommand",
        "PubkeyAuthentication",
        "RekeyLimit",
        "RhostsRSAAuthentication",
        "RSAAuthentication",
        "ServerAliveCountMax",
        "ServerAliveInterval",
        "SmartcardDevice",
        "StrictHostKeyChecking",
        "TCPKeepAlive",
        "UsePrivilegedPort",
        "UserKnownHostsFile",
        "VerifyHostKeyDNS",
        NULL,
};

Se fosse suportado, a sintaxe seria sshfs -o 'LocalForward=....'

Além disso, sshfs passa a opção -oClearAllForwardings=yes , por isso mesmo o encaminhamento definido em ~/.ssh/config não é honrado.

Como sshfs suporta passar um ssh_command e permite argumentos adicionais, o que você pode fazer é:

CODE='
  for i do
    [ "$i" = -oClearAllForwardings=yes ] &&
      i="-oLocalForward=127.0.0.5:3306 127.0.0.1:3306"
    set -- "$@" "$i"
    shift
  done
  exec ssh "$@"
' sshfs -o ssh_command='/bin/sh -c eval\ "$CODE" sh' user@host:/path mnt
    
por 16.01.2014 / 12:19