Подключите команду SSH к стандартному выводу

Я создаю инструмент командной строки, который динамически находит сервер из нашего кластера, затем на основе кластера извлекает соответствующий закрытый ключ, хранящийся в корзине Amazon s3, и локально копирует его в временный файл для подключения к серверу.

Как бы я SSH в IP-адрес, а затем позволить пользователю взаимодействовать с сеансом SSH?

В этом примере откроется сеанс ssh для компьютера в кластере с именем "платформа":

company_name ssh:platform

Я делал это раньше в Ruby примерно так:

exec("ssh -i #{private_key_file.path} -R 52698:localhost:52698 core@#{platform_ip}")

1 ответ

Решение

Вы, вероятно, хотите взглянуть на ящик ssh2-rs; документы имеют хороший пример того, что вы пытаетесь достичь.

Суть этого в том, что вы получаете объект channel_session, у которого есть методы для чтения выходных данных из консоли SSH (скопировано из документации здесь):

let mut channel = sess.channel_session().unwrap();
channel.exec("ls").unwrap();
let mut s = String::new();
channel.read_to_string(&mut s).unwrap();
Другие вопросы по тегам