SSH от A до B к C, используя IdentityFile на A

Я видел несколько похожих вопросов, но без четкого пути вперед, если на него уже был дан ответ, пожалуйста, закройте этот.

Мой сценарий:

  • Хост C не доступен из A.
  • Хост B доступен из A.
  • Хост C доступен из B.
  • A содержит файл pem для доступа к C.
  • Только B имеет ~ / .ssh / id_rsa.pub (из A) в authorized_keys

Я придумал следующее в .ssh / config

Host bastion-host
  HostName servername
  Port servercustomport

Host A.*
  User custom_user
  IdentityFile path/key.pem
  ForwardAgent yes
  ProxyCommand ssh bastion-host 'ssh-add -t 1 && nc %h %p'

Host A.j
  HostName ip

, а затем, используя ssh -vvv Aj, получил:

debug1: Reading configuration data ~/.ssh/config
debug1: ~/.ssh/config line 16: Applying options for A.*
debug1: ~/.ssh/config line 22: Applying options for A.j
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 47: Applying options for *
debug2: resolve_canonicalize: hostname ip is address
debug1: Executing proxy command: exec ssh bastion-host 'ssh-add -t 1 && nc ip 22'
debug1: identity file path/key.pem type -1
debug1: identity file path/key.pem-cert type -1
debug1: Local version string SSH-2.0-OpenSSH_8.1
kex_exchange_identification: Connection closed by remote host
kex_exchange_identification: Connection closed by remote host

Что я делаю не так? Можно ли так подключиться?
Последнее замечание, это, вероятно, не лучший поток безопасности, хранящий даже для 1-секундного ключа на бастионе, но бастион находится в частной сети без общего доступа.

1
задан 29 October 2020 в 14:26
3 ответа

Попробуйте следующее:

Host A.*
  User custom_user
  IdentityFile path/key.pem
  ProxyJump bastion-host

Вам не нужно пересылать агента, если вы используете Proxy команды. Команда Proxy означает, что основной ssh туннель пробрасывает порт к узлу назначения, и соединение устанавливается между вашим узлом и узлом назначения, а пересылка агента - это когда ssh соединения соединяются одно с другим.

1
ответ дан 24 April 2021 в 00:49

Попробуйте это с хоста-A:

ssh -tt Host-A ssh -tt Host-B ssh -tt Host-C
0
ответ дан 24 April 2021 в 00:49

У меня есть некоторые системы, к которым я не могу получить доступ напрямую через ssh, поэтому мне нужно использовать систему Solaris.

Вам просто нужно настроить свой .ssh / config на хосте A:

host *
ForwardAgent yes

host B
hostname servername
user username

host C
hostname servername
user username
ProxyCommand ssh -q -W %h:%p B

Затем просто ssh C из A.

Таким образом, я использую только одну систему для доступа к остальным, развертывания доступа и т. Д.

Надеюсь, это поможет, желаю хорошего!

0
ответ дан 24 April 2021 в 00:49

Теги

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