ssh тунель перерваний, щоб розблокувати ключ - Шукаю одну команду


1

Я намагаюся створити ssh тунель для доступу до віддаленого сервера (A), який може бути доступний тільки через інший сервер (B). Я маю ключ на моєму локальному комп'ютері (L), щоб дістатися до сервера ретрансляції (B) та іншого ключа на сервері ретрансляції (B), щоб дістатися до сервера призначення (A).

[локальна машина (L) з ключем до сервера ретрансляції (B)] - & gt; [сервер ретрансляції (B) з ключем до сервера призначення (A)] - & gt; [сервер призначення (A)]

У мене є файл ~ / .ssh / config, який виглядає так на моєму локальному комп'ютері (L):

Host relay.server(B)
    Hostname relay.server
    Port 22
    User me
    IdentityFile ~/.ssh/id_rsa

Host destination.server(A)
    Hostname destination.server
    Port 1122
    User me
    IdentityFile ~/.ssh/id_rsa

І я можу добитися того, щоб мій тунель працював з наступним:

виконання команди: ssh -N -L 1122:SERVER_PRIVATE_IP:22 relay.server(B) на моєму локальному комп'ютері (L). Це спонукає мене до пароля, щоб розблокувати перший ключ, а потім, здається, повісити його, не поверне підказку, використовуючи -f або закінчується символом & не дозволяє мені вводити пароль. Однак якщо я ^C цю команду після введення пароля, а потім введіть ssh destination.server(A) Я отримую запит на надання пароля, щоб розблокувати другий ключ, після якого я підключений до сервера призначення (A).

Я шукаю єдину команду, яка дозволить мені підключитися до сервера призначення (A) з моєї локальної машини (L) і запропонує мені надати паролі, необхідні для розблокування кожної клавіші. Або пропозицію про альтернативний спосіб організації речей, щоб я міг підключитися безпосередньо до сервера призначення (A) з моєї локальної машини (L) через сервер ретрансляції (B).


Дякуємо за роз'яснення. Я збирався запропонувати -f; Мені дуже шкода, що це не спрацювало. (Ви звичайно що ви спробували -f без &?) Я без ідеї; Щасти.
Scott

Відповіді:


0

Коротка відповідь вам потрібна

  • ProxyCommand використання nc для з'єднання через
  • ForwardAgent передавати ключі
  • переконайтеся, що ваш відкритий ключ є частиною .ssh/authorized_keys на всіх серверах
Host relay
    Hostname        relay.server.fqdn.or.IP
    User            me
    IdentityFile    ~/.ssh/id_rsa
    ForwardAgent    yes

Host destination
    Hostname        destination.server.fqdn.or.IP
    User            me
    IdentityFile    ~/.ssh/id_rsa
    ProxyCommand    ssh -q relay "nc %h %p"
    ForwardAgent    yes

Чим довша частина.

The ProxyCommand опція в ssh config запускає команду, коли це вкладається Host використовується. Зазвичай використовується з nc доступний від nmap.org, також відомий як ncat і має безліч варіантів.

У викладеному вище Host destination запис конфігурації ssh, ProxyCommand було встановлено на ssh -q relay "nc %h %p" який говорить, ssh реле спокійно і запустити nc destination.server.fqdn.or.IP 22.

nc встановлює зв'язок між вхідним ssh і адресата.

The ForwardAgent yes вказує ssh додати ключ до ssh-агента. ssh-агенти відстежують ключі і використовуються для автоматичного переходу права на хост, коли це необхідно. The ForwardAgent yes повідомляє агенту передати ключ іншому агенту на реле, а потім знову до місця призначення.

Тепер для того, щоб все це працювало, кожен сервер, до якого ви переходите, і в кінцевому підсумку, пункт призначення, повинен мати відкритий ключ, асоційований з вашим приватним ключем .ssh/authorized_keys файл. Коли ви створили свій приватний ключ, id_rsa, також має бути створений відкритий ключ id_rsa.pub.

Якщо у вас немає відкритого ключа, ви завжди можете отримати його з закритого ключа через ssh-keygen -y -f ~/.ssh/id_rsa для легкого копіювання / вставки. Зауважте, що відкритий ключ має 2 або 3 поля, розділені простором, але є один лінії.

Тому, ssh relay, редагувати ~/.ssh/authorized_keys (що може не існувати, так mkdir -p ~/.ssh може знадобитися) і вставте відкритий ключ на новий рядок (або перший, якщо його немає).

Перебуваючи на сервері ретрансляції, перевірте це nc існує в / bin або / usr / bin. Якщо це не так, то вам доведеться встановити його за допомогою менеджера пакетів, yum або apt-get.

Від сервера ретрансляції, ssh destination і виконайте те ж саме оновлення ~/.ssh/authorized_keys.

exit до самого місцевого комп'ютера, і ви повинні бути в змозі ssh destination

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.