Перейти к содержимому

Создать SSH Tunnel не работает с прокси

0

У меня есть доступ к серверу с использованием 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файле. Это правильно или я что-то упустил? Есть что-то еще, что я могу попробовать?

492 просмотра
Peter спросил 7 лет назад
P 125

1 ответ

0
Принятый ответ

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

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

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

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

Gordon Davisson ответил 7 лет назад
G 25 325