Эквивалентная конфигурация PuTTY для OpenSSH ProxyCommand (два разных файла.pem/ppk)

(Смежный вопрос: конфигурация PuTTY эквивалентна OpenSSH ProxyCommand, но она предназначена для одного файла ppk/pem... моя проблема немного другая.)

Я пытаюсь использовать PuTTY, чтобы получить SSH-соединение с моими серверами. Эти серверы разрешают входящее SSH-соединение только с бастионного сервера (другого конкретного сервера).

В Linux это не проблема с командой ssh ​​... Я добился этого в Linux, как это... (~/.ssh/config)

HOST myprod-bastion
  IdentityFile ~/.ssh/pemfile/myprod-bastion.pem
  User bastion-user
  Hostname X.X.X.X

HOST mywebserver
  IdentityFile ~/.ssh/pemfile/myweserver.pem
  User produser
  Hostname 192.168.Y.Y
  ProxyCommand ssh myprod-bastion -W %h:%p

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

ssh mywebserver

Кто-нибудь знает, как использовать такой конфиг в PuTTY? Цените вашу помощь заранее.:)

2 ответа

Я не уверен, если вам все еще нужно это ответили. Но поскольку я натолкнулся на этот вопрос, задав тот же вопрос, я поделюсь своим решением.

Этот сайт дал мне основу для подхода: (предупреждающая ссылка может быть сломана) https://www.math.ucla.edu/computing/kb/creating-ssh-proxy-tunnel-putty

Мне пришлось создать две связи с PuTTY; Один для бастиона, другой для другого (mywebserver).

Создайте соединение с хостом Bastion, указав имя хоста, порт и другую необходимую информацию в зависимости от настроек.

Тогда под Connection > SSH > Tunnelsдобавить переадресованный порт. Установите порт источника (например: 31415) и запишите это значение. Установите тип Dynamic и уходи Auto выбран.

Установка PuTTY для переадресованного порта

Обязательно сохраните это как конфигурацию.

Затем введите учетные данные, чтобы установить соединение с другим полем (mywebserver). Дополнительный шаг, который вам нужно сделать, это подключить его к первой конфигурации через прокси.

Под Connection > Proxyвыберите тип прокси SOCKS 5установите имя прокси-хоста как localhost и установите порт таким же, как созданный на предыдущем шаге (в этом примере: 31415). Остальные настройки можно оставить без изменений.

Установка PuTTY Proxy

Теперь все, что вам нужно, это установить первое соединение с хостом Bastion, а затем запустить соединение с другим блоком (mywebserver).

У меня была точно такая же проблема, которую вы описали, и решила ее следующим образом (на основе ( ответа Мартина Прикрыла в теме, на которую вы также ссылались)(см. Руководство пользователя PuTTY для получения подробной информации о PuTTYgen, Pageant или plink, которые требуются для это решение. Все инструменты поставляются вместе с PuTTY.)

  1. Преобразование обоих ключей с помощью PuTTYgen в формат файла PuTTY .ppk. Для этого нужно загрузить файл .pem в PuTTYgen и сохранить закрытый ключ.

  2. Запустите Pageant и добавьте закрытый ключ .ppk для bastion-user@myprod-bastion.

  3. Настройте параметры сеанса в графическом интерфейсе PuTTY.
    Во вкладках

    • Сессия: введите HostName 192.168.YY и (необязательно) Port
    • Подключение> Данные: введите имя пользователя для входа в систему.
    • Соединение> SSH> Auth: импортируйте файл секретного ключа вашего производителя @mywebserver(.ppk)
      (вместо этого вы также можете импортировать этот ключ в Pageant, если хотите.)
    • Connection> Proxy: настройте (вроде) JumpProxy (myprod-bastion), как описано ниже.
    • Не забудьте сохранить свою конфигурацию как mywebserver

Настроить JumpProxy (myprod-bastion)

как показано на снимке экрана:

В вашем случае вы можете оставить поля «Имя хоста прокси», «Порт» и «Имя пользователя» пустыми, и вам не нужен пароль, поскольку вы предоставляете закрытый ключ. Полная команда в поле «команда локального прокси»:
plink -ssh bastion-user@X.X.X.X -P YYY -batch -agent -nc %host:%port
Объяснение параметров:

  • "-ssh" определяет протокол (я предполагаю, что это необязательно)
  • " bastion-user@XXXX -P YYY" данные вашего подключения (порт не нужен в вашем случае)
    (вы также можете использовать здесь переменные PuTTY% proxyhost и% proxyport, если вы заполнили соответствующие поля выше, но я не знаю имя переменной для прокси-пользователя.)
  • "-batch" запрещает пользователю любые запросы или ввод
  • «-agent» извлекает закрытый ключ из Pageant, который вы запускаете перед установкой соединения с mywebserver. ("-i keyfile.ppk" тоже должен работать, но я не хотел путаться с путем ...)
  • "-nc%host:% port" аналогично ssh "-W host: port"
    Переменные ссылаются на соответствующие значения mywebserver на вкладке "Сеанс".

Вы можете начать сеанс из командной строки, очень похожей на * nix, с помощью

      plink mywebserver
Другие вопросы по тегам