Чи може ProxyCommand ssh_config запустити локальну команду перед підключенням до віддаленої машини?


11

Перш ніж я можу підключитися до певної віддаленої машини, я повинен виконати певну локальну команду. Тож замість цього ssh me@remote.machineтреба робити

local_command
ssh me@remote.machine

Мені б хотілося це автоматизувати, щоб тільки мені це робити ssh remote.machine.

Я знаю , що я можу домогтися цього в оболонці рівні, створюючи свій власний sshсценарій , який викликає /usr/bin/ssh, але я можу зробити це з допомогою ProxyCommand варіант ssh_config?

Наскільки я це розумію, мені потрібно щось подібне

Host remote.machine
    ProxyCommand local_command; ssh me@remote.machine

в моєму ~/.ssh/configфайлі, але не зовсім це, звичайно, тому що це круговий!

Відповіді:


9

Якщо ProxyCommandви користуєтесь , ви повинні використовувати щось, на кшталт /usr/bin/ncпідключення до сервера.

Для виклику вашої команди перед підключенням потрібно скористатися sh -c "command list"для об'єднання двох команд як однієї.

Host remote.machine
    ProxyCommand sh -c "local_command; /usr/bin/nc %h %p"

БІЛЬШЕ:

Якщо ваш local_commandзанадто складний, ви можете використовувати сценарій:

cat my_connect.sh
#!/bin/bash

local_command
/usr/bin/nc "$1" "$2"

Конфігурація ssh стає:

Host remote.machine
        ProxyCommand /path_to_my_connect.sh %h %p

Нарешті, ви можете додати власний проксі до /usr/bin/nc


1

Скористайтеся прикладом зі сторінки, яку ви пов’язали:

ProxyCommand /usr/bin/nc -X connect -x 192.0.2.1:8080 %h %p

Викликає nc (netcat) для підключення до проксі (проксі, що працює на 192.0.2.1:8080) і передає% h і% p команді ssh (% h = ім'я хоста,% p = порт)

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