У меня есть доступ к серверу с использованием SSH с помощью командной строки:

ssh my-server

с этим файлом .ssh/config:

Host *
 AddKeysToAgent yes
 UseKeychain yes
 IdentityFile ~/.ssh/id_rsa

 Host my-server
  HostName 1.2.3.4
  User user
  ProxyJump some.proxy.com
  IdentityFile ~/.ssh/id_rsa

Однако, если я хочу создать туннель с сервером для доступа к нему через браузер, например, используя:

sudo ssh -L 80:my-server:80 my-server

Я получаю следующую ошибку:

ssh: Could not resolve hostname my-server: nodename nor servname provided, or not known

Я полагаю, что использование ssh таким образом игнорирует прокси, который настроен в файле .ssh/config . Это правильно или я что-то упустил? Есть что-то еще, что я могу попробовать?

1 ответ1

0

После погони за красными сельдями в комментариях, я почти уверен, что настоящая проблема не имеет ничего общего ни с ProxyJump ни с туннелем -L ; это из-за sudo . При запуске sudo ssh команда ssh выполняется с правами пользователя root, и поэтому она ищет файл .ssh/config в домашнем каталоге корневой учетной записи, а не в вашей. И ~ root/.ssh/config не имеет записи для my-server (если он вообще существует).

Вы должны быть в состоянии это исправить, добавив -F ~/.ssh/config к параметрам ssh , чтобы указать, использовать ли ваш конфигурационный файл вместо корневого. Обратите внимание, что ~/ part будет расширена оболочкой до того, как она будет передана в sudo (и затем в ssh) в качестве параметра, поэтому оболочка развернет ее в вашем домашнем каталоге, а не в корневом каталоге.

ОДНАКО, я не проверял это, но я думаю, что записи IdentityFile ~/.ssh/id_rsa в вашем файле конфигурации будут повреждены , потому что они будут преобразованы в корневой каталог ~/.ssh. Вам может потребоваться указать явный путь к домашней директории вместо ярлыка ~ . Другой возможностью было бы добавить -i ~/.ssh/id_rsa в командную строку, чтобы она снова была развернута оболочкой, работающей от вашего имени.

Кроме того, вы, скорее всего, будете получать предупреждения о неизвестных хостах и т.д., Так как вы будете использовать файл root ~/.ssh/known_hosts.

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