Skip to content

SSH: điều khiển từ xa

Các mẹo dùng SSH client khi làm việc với board và máy từ xa. Giao thức, thuật toán và cách hardening SSH server trên thiết bị nằm ở trang SSH (tab Security).

Secure Shell (SSH) là giao thức mạng có mã hóa, dùng để vận hành dịch vụ mạng an toàn trên một mạng không an toàn. Ứng dụng phổ biến nhất là đăng nhập dòng lệnh từ xa và chạy lệnh từ xa, nhưng SSH có thể bảo vệ bất kỳ dịch vụ mạng nào.

Tùy chọn nâng cao

  • Tắt kiểm tra host key: ssh -o StrictHostKeyChecking=no
  • Chuyển file known hosts (~/.ssh/known_hosts) sang /dev/null: ssh -o UserKnownHostsFile=/dev/null
  • Chạy script trên máy từ xa:
    ssh user@host <<'ENDSSH'  
        #commands to run on remote host  
    ENDSSH

Ví dụ: ssh root@10.61.61.195 "echo 1 > ~/test" đăng nhập vào máy root@10.61.61.195 rồi chạy lệnh "echo 1 > ~/test".

  • Tự cung cấp mật khẩu cho ssh:
        echo "#!/bin/sh" >> /tmp/genpass.sh
        echo "echo $pass" >> /tmp/genpass.sh
        export SSH_ASKPASS="/tmp/genpass.sh" && export DISPLAY=
        setsid ssh root@10.61.61.195
    

setsid chạy chương trình trong một session mới, tách khỏi terminal điều khiển. Khi không có terminal điều khiển, ssh lấy mật khẩu bằng chương trình khai trong SSH_ASKPASS thay vì hỏi trên terminal; đó là lý do script trên dùng setsid. OpenSSH từ bản 8.4 có thêm biến SSH_ASKPASS_REQUIRE=force để dùng SSH_ASKPASS mà không cần setsid.

Xem thêm Bash Script SSH Automation Without a Password Prompt.

Ví dụ lệnh

timeout 20 setsid ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null

Tài liệu tham khảo

Các tùy chọn cấu hình SSH xem tại https://linux.die.net/man/5/ssh_config.