# SSH vào máy chủ GPU: kết nối GPU cloud và kiểm tra card

URL: https://cloudj.net/vi/blog/ssh-into-gpu-instance
Published: 2026-11-12 · Updated: 2026-11-12

> Hướng dẫn SSH vào máy chủ GPU: tạo key, lấy host và port ở tab Connection, chờ key được nhận, kiểm tra bằng nvidia-smi, dùng tmux và chuyển tiếp cổng.

Mọi GPU instance của Cloudj đều được truy cập theo cùng một cách: qua SSH, bằng key. Không có đăng nhập bằng mật khẩu, nên SSH vào máy chủ GPU là kỹ năng đầu tiên bạn cần nắm. Bài viết hướng dẫn tạo và thêm key, tìm host và port (không phải lúc nào cũng là 22), làm gì trong vài phút đầu sau khi triển khai, cách kiểm tra GPU bằng `nvidia-smi`, và hai thói quen giúp người mới tránh được nhiều rắc rối nhất: `tmux` và chuyển tiếp cổng. Bài viết dành cho cả sinh viên mới tập làm AI lẫn kỹ sư đã quen VPS.

## Bước 1: tạo SSH key

Nếu bạn đã dùng SSH key cho máy chủ khác, có thể dùng lại. Nếu chưa, hãy tạo trên máy tính của bạn. Trên macOS, Linux và Windows 10, 11 (PowerShell đã có sẵn OpenSSH):

```bash
ssh-keygen -t ed25519 -C "laptop-cua-toi"
```

Nhấn Enter để giữ vị trí mặc định và đặt passphrase. Lệnh này tạo private key, thứ không bao giờ rời khỏi máy bạn, và public key có đuôi `.pub`. Bài [thiết lập SSH key cho VPS](https://cloudj.net/vi/blog/ssh-key-vps-setup) giải thích kỹ hơn về key; cùng một key dùng được cho GPU instance.

In public key ra để sao chép:

```bash
cat ~/.ssh/id_ed25519.pub
```

## Bước 2: thêm key và chọn key khi triển khai

Thêm public key vào tài khoản Cloudj trong console. Khi triển khai GPU, bạn bắt buộc chọn ít nhất một SSH key; thiếu key thì không triển khai được. Nếu làm theo nhóm, hãy thêm key của từng người và chọn tất cả.

Cách chọn máy, gồm cả quốc gia đặt máy, có trong bài [chọn quốc gia cho máy chủ GPU trong console](https://cloudj.net/vi/blog/filter-gpu-by-country-console).

## Bước 3: tìm host và port

Khi instance đã chạy, mở tab **Connection**. Tab này hiển thị:

- **host**,
- **port**, thường không phải 22,
- câu lệnh SSH đầy đủ, chỉ việc sao chép.

Câu lệnh có dạng:

```bash
ssh -p PORT root@HOST
```

Luôn lấy port từ tab Connection thay vì mặc định là 22.

### Vài phút đầu tiên

Key mới thêm có thể mất tới 3 phút mới được chấp nhận sau khi instance khởi động. Nếu thấy `Permission denied (publickey)` ngay sau khi triển khai, hãy chờ một lát rồi thử lại trước khi thay đổi bất cứ điều gì.

## Bước 4: kết nối gọn hơn

Thêm một mục vào `~/.ssh/config` trên máy bạn:

```text
Host gpu1
    HostName HOST
    Port PORT
    User root
    IdentityFile ~/.ssh/id_ed25519
    ServerAliveInterval 30
```

Giờ chỉ cần gõ `ssh gpu1`. `ServerAliveInterval` gửi một gói giữ kết nối mỗi 30 giây, hữu ích khi mạng hay cắt các phiên đang rảnh, chuyện khá quen với kết nối quốc tế từ Việt Nam. Nhớ cập nhật mục này khi triển khai instance mới.

## Bước 5: kiểm tra GPU

Sau khi kết nối, xác nhận đúng thứ bạn đã thuê:

```bash
nvidia-smi
```

Bạn sẽ thấy tên GPU, bộ nhớ, phiên bản driver và phiên bản CUDA cao nhất mà driver hỗ trợ. Vài lệnh kiểm tra hữu ích khác:

```bash
nvidia-smi --query-gpu=name,memory.total,memory.used,utilization.gpu --format=csv
watch -n 2 nvidia-smi
df -h
```

Lệnh đầu in bản tóm tắt gọn, lệnh thứ hai làm mới mỗi hai giây khi job đang chạy, lệnh thứ ba cho biết dung lượng đĩa còn trống. Dung lượng đĩa cố định từ lúc triển khai, nên hãy kiểm tra sớm.

Nếu dùng template PyTorch, kiểm tra PyTorch có nhận GPU không:

```bash
python -c "import torch; print(torch.cuda.is_available(), torch.cuda.get_device_name(0))"
```

Bài [chạy PyTorch với template Jupyter](https://cloudj.net/vi/blog/run-pytorch-jupyter-template) nói chi tiết về template này.

## Bước 6: giữ job dài sống sót với tmux

Nếu kết nối SSH bị rớt, mọi thứ đang chạy trong phiên đó sẽ dừng. Hãy chạy job dài trong `tmux`:

```bash
tmux new -s train
python train.py
```

Thoát ra bằng `Ctrl+b` rồi `d`. Lúc sau kết nối lại và gõ `tmux attach -t train`. Nếu máy chưa có `tmux`, cài bằng `apt-get install -y tmux`.

## Bước 7: mở công cụ web bằng chuyển tiếp cổng

Jupyter, ComfyUI, API của model hay dashboard đều lắng nghe trên một cổng của GPU instance. Đừng mở chúng ra internet; hãy chuyển tiếp cổng qua SSH:

```bash
ssh -p PORT -L 8188:localhost:8188 root@HOST
```

Rồi mở `http://localhost:8188` trên trình duyệt. Đổi số cổng cho công cụ khác, ví dụ `-L 8888:localhost:8888` cho Jupyter hay `-L 11434:localhost:11434` cho API của Ollama. Bài [chạy Ollama trên máy chủ GPU châu Á](https://cloudj.net/vi/blog/ollama-gpu-server-asia) dùng đúng cách này.

## Chuyển file

```bash
rsync -avP -e "ssh -p PORT" ./data/ root@HOST:/workspace/data/
scp -P PORT root@HOST:/workspace/results.zip .
```

Lưu ý `scp` dùng `-P` viết hoa cho port. `rsync -P` tiếp tục được khi bị ngắt giữa chừng, rất quan trọng khi chuyển model lớn.

## Xử lý sự cố

| Hiện tượng | Nguyên nhân có thể | Cách xử lý |
|---|---|---|
| `Permission denied (publickey)` ngay sau khi triển khai | Key chưa được chấp nhận | Chờ tới 3 phút rồi thử lại |
| `Permission denied (publickey)` về sau | Sai key, hoặc chưa chọn key lúc triển khai | Dùng `-i` với đúng key; triển khai lại có chọn key |
| `Connection refused` hoặc timeout | Sai port, hoặc instance chưa chạy | Lấy port từ tab Connection; xem trạng thái trên trang instance |
| `Host key verification failed` | Instance mới trả lời trên host và port bạn từng dùng trước đó | Xóa mục cũ bằng `ssh-keygen -R "[HOST]:PORT"` |
| Phiên bị rớt khi để rảnh | Mạng đóng kết nối nhàn rỗi | Thêm `ServerAliveInterval 30` |

Trang instance còn hiển thị trạng thái, mức sử dụng GPU và những dòng log cuối của container, rất hữu ích khi container không khởi động được.

## Câu hỏi thường gặp

### Có đăng nhập bằng mật khẩu được không?

Không. GPU instance chỉ nhận SSH key.

### Vì sao port của tôi không phải 22?

Port SSH được cấp riêng cho từng instance và có thể là bất kỳ số nào. Luôn dùng port trong tab Connection.

### Nhiều người có dùng chung một instance được không?

Được. Thêm public key của từng người vào tài khoản và chọn tất cả khi triển khai.

### Mở Jupyter hay ComfyUI thế nào?

Chuyển tiếp cổng bằng `ssh -L` rồi mở localhost trên trình duyệt.

## Bước tiếp theo

Mở [trang triển khai GPU](https://app.cloudj.net/deploy/gpu), triển khai một instance nhỏ có chọn key của bạn, rồi chạy qua các bước kiểm tra ở trên. Tiền thuê trừ theo phút từ số dư tài khoản nạp bằng chuyển khoản VND. Giá "từ" theo thời gian thực của mọi mẫu có trên [GPU cloud](https://cloudj.net/vi/gpu-cloud).
