sshfs LocalForward без файла конфигурации

mysqld конфигурационный файл - в /etc/mysql/my.cnf на моем поле Linux - имеет a bind-address опция. Это может быть установлено на конкретный IP-адрес, как 10.237.49.251, и MySQL затем только послушает в том интерфейсе (eth0).

Значение по умолчанию (по крайней мере, на Ubuntu) должно послушать только на localhost, иначе. петлевой интерфейс (127.0.0.1).

Иначе MySQL может послушать на всех доступных портах и интерфейсах, которые могут быть явно указаны с bind-address=0.0.0.0.

3
16.01.2014, 12:50
2 ответа

К сожалению, это не возможно с -o. Список ssh опции, поддерживаемые sshfs может быть найден в исходном коде:

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,
};

Если бы это поддерживалось, то синтаксис был бы sshfs -o 'LocalForward=....'

Кроме того, sshfs передачи -oClearAllForwardings=yes опция, поэтому даже передача, определенная в ~/.ssh/config не соблюдаются.

С тех пор sshfs поддержки, передающие a ssh_command, и позволяет дополнительные аргументы там, что можно сделать, вместо этого:

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
5
27.01.2020, 21:16

просто опираясь на @Stéphane Chazelas ответ sshfs передает параметр -oClearAllForwardings=yes, поэтому любая определенная переадресация не будет выполняться

, так что это поведение можно перезаписать, передав вместо этого -oClearAllForwarding=no, это можно сделать следующим образом

sshfs -o 'ssh_command=ssh -oClearAllForwardings=no' user@host:/path/to/remote/directory /path/to/local/directory

вы можете дополнительно передать параметр LocalForwarding следующим образом:

sshfs -o 'ssh_command=ssh -oClearAllForwarding=no -L 3309:127.0.0.1:3309' user@host:/path/to/remote/directory /path/to/local/directory

бесстыдный плагин :Я написал скрипт для упрощения монтирования с помощью sshfs, который называется sshmount он устанавливает несколько нормальных параметров по умолчанию, таких как reconnect, ServerAliveInterval=15, sshfs_syncи sync_readdirна основе моего собственного опыта работы с sshfs и нескольких советов, которые я недавно получил и с сегодняшнего дня у него также будет опция -F, чтобы не очищать все переадресации, и опция -S, чтобы указать параметры ssh xD

1
26.08.2021, 16:40

Теги

Похожие вопросы