Цепочка SSH с использованием PHPSeclib (ssh машина 1, машина 1 -> машина 2, взаимодействие)

Мы поднимали эту тему раньше, но любопытно, есть ли у кого-нибудь новая информация по этому вопросу.

Мы используем несколько серверов, доступ к которым осуществляется за «сервером управления», поэтому, когда мы подключаемся по SSH, мы должны сначала войти туда, а затем оттуда войти на нашу целевую машину, поэтому всегда как минимум 2 соединения SSH. В настоящее время мы используем переадресацию портов на сервере управления с помощью : , что позволит нам напрямую пройти к интересующему серверу за кулисами, поэтому мы думаем, что напрямую подключаемся к каждому из них по ssh.

Проблема здесь в том, что для этого требуется специальная настройка, а в масштабируемой среде, где серверы можно добавлять/удалять, обслуживание становится громоздким. В идеале мы могли бы просто подключаться по ssh к нескольким машинам с помощью phpseclib и запускать команды.

Кто-нибудь сталкивался с этим или есть совет по решению на уровне сценариев? По сути, нам нужно подключить цепочку ssh и ssh к машине 1, затем к машине 2 с машины 1 и запустить команды/взаимодействовать с машиной 2.


person Pollard LMS    schedule 18.02.2016    source источник


Ответы (1)


$ssh = new Net_SSH2('machine1');
$ssh->login('user', 'pass');

$ssh->setTimeout(10);    
$ssh->enablePTY();

$ssh->exec('ssh machine2');
echo $ssh->read();

На этом этапе (при условии, что вы используете аутентификацию RSA и что ваш закрытый ключ находится в вашем файле ~/.ssh/id_rsa на компьютере) приглашение, которое вы получите, должно относиться к машине 2.

Вы также можете подключиться к машине3, выполнив следующие действия:

$ssh = new Net_SSH2('machine1');
$ssh->login('user', 'pass');

$ssh->setTimeout(10);
$ssh->enablePTY();

$ssh->exec('ssh machine2');
echo $ssh->read();

$ssh->exec('ssh machine3');
echo $ssh->read();
person neubert    schedule 24.02.2016