# Hướng dẫn cho AI học viên: SSH vào VPS iNET / OnePortal File này dành để đưa trực tiếp cho AI/agent của học viên đọc và làm theo khi cần kết nối SSH vào một VPS mua trên **iNET OnePortal**. Mục tiêu: sau khi làm xong, AI/agent SSH trực tiếp vào VPS bằng SSH key, không cần vào portal mỗi lần. > Nguyên tắc an toàn: chỉ copy **public key `.pub`** vào VPS. Không gửi private key, không in nội dung `.pem` ra chat, không reboot/reset/reinstall nếu chưa được chủ VPS xác nhận rõ. --- ## 1. Vào trang Cloud Server của iNET Mở: ```text https://portal.inet.vn/list-service/cloudserver ``` Đăng nhập tài khoản iNET nếu được yêu cầu. Nếu gặp: ```text login / 2FA / CAPTCHA ``` thì dừng lại để chủ tài khoản tự đăng nhập. --- ## 2. Mở đúng VPS Trong menu bên trái chọn: ```text Cloud Server ``` Ở tab: ```text Instances ``` chọn VPS cần kết nối. Trên danh sách sẽ thấy thông tin kiểu: ```text IP public Hệ điều hành CPU/RAM/Disk Trạng thái Ngày hết hạn ``` Ví dụ VPS của Trinh: ```text IP: 103.216.117.91 OS: Ubuntu-24.04_n8nPanel-OpenClaw Cấu hình: 3 CPU · 6GB · 80GB Trạng thái: Đang hoạt động ``` --- ## 3. Ghi lại thông tin SSH trong trang chi tiết Trong trang chi tiết VPS, tab **Instance**, tìm phần: ```text THÔNG TIN QUẢN TRỊ ``` Ghi lại: ```text Địa chỉ IP Tên tài khoản Cổng SSH / Remote ``` Ví dụ VPS của Trinh: ```text Địa chỉ IP: 103.216.117.91 Tên tài khoản: root Cổng SSH / Remote: 24700 ``` Từ đây ta biết lệnh SSH sẽ có dạng: ```bash ssh -p 24700 root@103.216.117.91 ``` --- ## 4. Kiểm tra AI/agent có SSH key chưa Trên máy đang chạy AI/agent, chạy: ```bash ls -lah ~/.ssh ls ~/.ssh/*.pub 2>/dev/null ``` Nếu có key, xem public key: ```bash cat ~/.ssh/id_ed25519.pub ``` Nếu key tên khác, ví dụ: ```bash cat ~/.ssh/superbrain_vps.pub ``` Public key có dạng: ```text ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAA... ten-key ``` **Chỉ dùng dòng `.pub` này.** Không gửi/copy các file private key như: ```text id_ed25519 id_rsa *.pem ``` --- ## 5. Nếu chưa có SSH key thì tạo Trên máy AI/agent: ```bash ssh-keygen -t ed25519 -C "ai-hoc-vien-inet-vps" ``` Có thể Enter để dùng đường dẫn mặc định: ```text ~/.ssh/id_ed25519 ~/.ssh/id_ed25519.pub ``` Lấy public key: ```bash cat ~/.ssh/id_ed25519.pub ``` --- ## 6. Test xem key đã vào được chưa Chạy từ máy AI/agent: ```bash ssh -o BatchMode=yes -o ConnectTimeout=10 -p PORT USER@IP 'whoami && hostname && uptime' ``` Ví dụ: ```bash ssh -o BatchMode=yes -o ConnectTimeout=10 -p 24700 root@103.216.117.91 'whoami && hostname && uptime' ``` Nếu vào được, coi như xong. Nếu báo: ```text Permission denied (publickey,password) ``` thì cần thêm public key vào VPS theo bước tiếp theo. --- ## 7. Cách thêm public key trên iNET — Cách A: dùng Console (VNC) Trong trang chi tiết VPS iNET, tab **Instance**, bấm: ```text Console (VNC) ``` Một tab noVNC sẽ mở ra. Đăng nhập vào VPS bằng user quản trị, thường là: ```text root ``` Sau khi vào shell VPS, chạy: ```bash mkdir -p ~/.ssh chmod 700 ~/.ssh nano ~/.ssh/authorized_keys ``` Dán public key của AI/agent vào cuối file. Lưu trong nano: ```text Ctrl + O → Enter → Ctrl + X ``` Set quyền: ```bash chmod 600 ~/.ssh/authorized_keys ``` Nếu user là `root`, file thực tế là: ```text /root/.ssh/authorized_keys ``` Nếu user khác, ví dụ `ubuntu`, file là: ```text /home/ubuntu/.ssh/authorized_keys ``` --- ## 8. Cách thêm public key trên iNET — Cách B: dùng file Linux `.pem` Dùng cách này khi chủ VPS đồng ý cho AI tải key từ portal. Trong trang chi tiết VPS iNET, mở tab: ```text SSH Key ``` Tìm dòng keypair của VPS, sẽ thấy nút: ```text Linux .pem Windows .ppk ``` Bấm: ```text Linux .pem ``` Tải file `.pem` về máy AI/agent. Set quyền file: ```bash chmod 600 /path/to/file.pem ``` SSH vào VPS bằng `.pem`: ```bash ssh -i /path/to/file.pem -p PORT USER@IP ``` Ví dụ VPS của Trinh: ```bash ssh -i ./CS-Linux-20261008081615293.pem -p 24700 root@103.216.117.91 ``` Sau khi vào được VPS, thêm public key chính của AI/agent: ```bash PUB='DAN_PUBLIC_KEY_VAO_DAY' mkdir -p ~/.ssh chmod 700 ~/.ssh touch ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys grep -qxF "$PUB" ~/.ssh/authorized_keys || printf '%s\n' "$PUB" >> ~/.ssh/authorized_keys ``` Ví dụ: ```bash PUB='ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAA... ai-hoc-vien-inet-vps' mkdir -p ~/.ssh chmod 700 ~/.ssh touch ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys grep -qxF "$PUB" ~/.ssh/authorized_keys || printf '%s\n' "$PUB" >> ~/.ssh/authorized_keys ``` Thoát VPS: ```bash exit ``` --- ## 9. Test SSH trực tiếp bằng key chính Từ máy AI/agent: ```bash ssh -i ~/.ssh/id_ed25519 -p PORT USER@IP 'echo SSH_OK; whoami; hostname; uptime' ``` Nếu dùng key riêng: ```bash ssh -i ~/.ssh/TEN_KEY -p PORT USER@IP 'echo SSH_OK; whoami; hostname; uptime' ``` Ví dụ VPS của Trinh: ```bash ssh -i ~/.ssh/superbrain_vps -p 24700 root@103.216.117.91 'echo SSH_OK; whoami; hostname; uptime' ``` Kết quả thành công sẽ tương tự: ```text SSH_OK root cs-linux-... up ... ``` --- ## 10. Tạo alias SSH cho VPS iNET Trên máy AI/agent, mở: ```bash nano ~/.ssh/config ``` Thêm block: ```sshconfig Host inet-vps-hocvien HostName IP User USER Port PORT IdentityFile ~/.ssh/TEN_KEY IdentitiesOnly yes ``` Ví dụ VPS của Trinh: ```sshconfig Host inet-vps-trinh HostName 103.216.117.91 User root Port 24700 IdentityFile ~/.ssh/superbrain_vps IdentitiesOnly yes ``` Set quyền: ```bash chmod 600 ~/.ssh/config ``` Từ lần sau chỉ cần: ```bash ssh inet-vps-trinh ``` Test: ```bash ssh inet-vps-trinh 'whoami && hostname && uptime' ``` --- ## 11. Kiểm tra VPS sau khi SSH được Chỉ đọc, không thay đổi hệ thống: ```bash hostnamectl uptime whoami free -h df -hT ss -tulpn systemctl list-units --type=service --state=running --no-pager docker ps 2>/dev/null || true ``` Nếu VPS có OpenClaw: ```bash command -v openclaw && openclaw status ``` --- ## 12. Riêng với VPS iNET có OneDash báo ngoại tuyến Nếu iNET/OneDash báo VPS **ngoại tuyến** nhưng SSH vẫn vào được, kiểm tra: ```bash systemctl is-active onedash-agent vmagent vector ssh nginx docker 2>/dev/null || true ``` Nếu thấy: ```text onedash-agent: failed ``` kiểm tra log: ```bash systemctl status onedash-agent --no-pager -l journalctl -u onedash-agent -n 80 --no-pager ``` Nếu lỗi kiểu: ```text start-limit-hit ``` có thể xử lý riêng agent giám sát: ```bash systemctl reset-failed onedash-agent systemctl start onedash-agent systemctl is-active onedash-agent ``` Không cần restart VPS. --- ## 13. Checklist an toàn cho AI/agent Được làm: ```text - Đọc IP/user/port từ iNET portal - Lấy public key .pub của AI/agent - Thêm public key vào authorized_keys - Test SSH - Tạo alias SSH local - Kiểm tra trạng thái read-only - Restart riêng onedash-agent nếu chủ VPS đồng ý và chỉ để sửa trạng thái portal ``` Không làm nếu chưa có xác nhận rõ: ```text - Tắt máy - Khởi động mềm/cứng - Cài lại hệ điều hành - Cài lại mật khẩu - Xoá key cũ khỏi authorized_keys - Đổi firewall - Tắt SSH password - Đổi port SSH - Public dashboard/app ra internet ``` --- ## 14. Mẫu báo cáo sau khi làm xong ```text Đã kết nối SSH thành công vào VPS iNET. IP: User: Port: Alias: Đã thêm public key của AI/agent vào: ~/.ssh/authorized_keys Lệnh test: ssh -p @ 'whoami && hostname && uptime' ``` Không đưa nội dung private key `.pem` vào báo cáo. --- ## Link tham khảo - iNET OnePortal Cloud Server: https://portal.inet.vn/list-service/cloudserver - OpenSSH authorized_keys manual: https://man.openbsd.org/sshd#AUTHORIZED_KEYS_FILE_FORMAT - GitHub Docs — tạo SSH key mới: https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent - DigitalOcean — SSH essentials: https://www.digitalocean.com/community/tutorials/ssh-essentials-working-with-ssh-servers-clients-and-keys