2

Поэтому я пытаюсь сделать что-то относительно простое в теории, но мой вариант использования, похоже, трудно найти, так как большинство прокси-серверов, которые я нахожу в Интернете, касается настройки прокси для вашего браузера через туннель SSH.

То, что я хотел бы сделать, это настроить подключенный диск на моем Mac, который указывает на окно Linux, к которому у меня есть доступ SSH. Я нашел некоторые полезные ресурсы в Интернете , включая этот , в котором автор рекомендует что - то вроде:

sudo ifconfig lo0 127.0.0.2 alias up
sudo ssh -NL 127.0.0.2:139:localhost:139 \
         -NL 127.0.0.2:445:localhost:445 \
         user@ssh-host

Из того, что я понимаю, это выглядит хорошо ... Тем не менее, моя установка только немного сложнее. Это предполагает, что у вас есть прямой доступ SSH к коробке. Моя ситуация такова, что я подключаюсь к своей машине через другую машину. Итак, мой ~/.ssh/config выглядит следующим образом:

Host *.dev
  User jmurray
  IdentityFile ~/.ssh/my_dev_identity_file
  ProxyCommand ssh -A proxy_box nc %h %p

Итак, когда я зайду в jmurray.dev (окно taget linux), меня направят через сервер proxy_box . Я должен упомянуть, что эта конфигурация сети находится вне моего контроля, поэтому, пожалуйста, не предлагайте изменения самой конфигурации сети.

Итак, из вышеупомянутого урока первая команда работает нормально (конечно), но вторая команда:

sudo ssh -NL 127.0.0.2:139:localhost:139 \
         -NL 127.0.0.2:445:localhost:445 \
         jmurray@jmurray.dev

ошибки с:

sh: Could not resolve hostname jmurray.dev: nodename nor servname provided, or not known

Итак, я только предполагаю, что он не читает мой файл конфигурации, когда я делаю этот запрос. Итак, я решил передать свои конфигурации через командную строку с немного измененной версией:

sudo ssh -NL 127.0.0.2:139:localhost:139 \
         -NL 127.0.0.2:445:localhost:445 \
         jmurray@jmurray.dev \
         -o 'User jmurray' \
         -o 'IdentityFile ~/.ssh/my_dev_identity_file' \
         -o 'ProxyCommand ssh -A proxy_box nc %h %p'

но тогда я получаю отдельную ошибку:

Permission denied (publickey,gssapi-with-mic).
ssh_exchange_identification: Connection closed by remote host

Так... Вот где я застреваю. Я чувствую, что это должно быть возможно. Если я могу выполнить команду ssh в поле за один раз с локального компьютера, я чувствую, что можно настроить туннель одной командой с локального компьютера. А поскольку proxy_box является общей машиной, мне бы очень хотелось держаться подальше от любых решений, которые требуют, чтобы я выступал в качестве пользователя root на этой машине.

Заранее благодарю за любую помощь!! Это высоко ценится!

1 ответ1

2

Запуск ssh с помощью sudo означает, что вы запускаете его как root, следовательно, он использует не ваш .ssh/config, а root.

Запустите ваше ssh-соединение на непривилегированном порту как вы, а затем запустите дополнительное прокси-соединение SSH с localhost для пересылки привилегированных портов.

Хорошо, в качестве примера, в дополнение к обычному SSH:

ssh -NL 127.0.0.2:10139:localhost:139 \
    -NL 127.0.0.2:10445:localhost:445 \
     user@ssh-host

вы также запускаете этот локальный ssh:

sudo ssh -NL 127.0.0.2:139:127.0.0.2:10139 \
         -NL 127.0.0.2:445:127.0.0.2:10445 \
         $USER@localhost

Таким образом, вы избегаете привязки к привилегированным портам 139 и 445 в вашем реальном соединении SSH и привязываете их только локально к вашей машине.

Тем не менее, все это кажется небольшим усилием для простой обработки файлов, должен быть хороший выбор реализаций SSHFS/SFTP для Mac.

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