Архив метки: ssh

Rust — SSH2 sftp download file

use std::net::TcpStream;
use std::io::Read;
use ssh2::Session;
use std::path::Path;

fn main() {
    let tcp = TcpStream::connect("127.0.0.1:22").unwrap();
    let mut sess = Session::new().unwrap();
sess.set_tcp_stream(tcp);
sess.handshake().unwrap();
sess.userauth_password("user", "password").unwrap();
    let mut contents:Vec<u8> = Vec::new();
    let sftp = sess.sftp().unwrap();
    let mut stream = sftp.open(Path::new("/tmp/test.txt")).unwrap();
             stream.read_to_end(&mut contents).unwrap();
             let _ = std::fs::write(r"/tmp/test_out.txt", &contents);
}

Делаем авторизацию в Docker по ключу

  1. заходим по ssh на сервер с которого хотим прокинуть-получить авторизацию по ключу (без пароля) . Мне это нужно было, чтобы запускать скрипты в Docker, которые использовали утилиты установленные только в Docker. Проблема в том, чтобы вы не можете так просто в shell-скриптах использовать авторизацию по ssh с паролем.
  2. С сервера выполняем:  $ mkdir ~/.ssh && cd ~/.ssh
  3. Cоздаем открытый и закрытый ключ нашей локальной системы: ssh-keygen -t rsa -q -N » -f ~/.ssh/id_rsa
  4. Если в системе есть программа ssh-copy-id, то настраиваем удаленную систему на то, чтобы она авторизовывала SSH по открытому ключу: $ ssh-copy-id -i ~/.ssh/id_rsa.pub user@remote.server
  5. В принципе все, авторизуемся первый раз по ключу : ssh localhost -p222 -i id_rsa

Дальше в скриптах можно выполнять авторизацию по ключу в Docker