Подключите команду 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();