Gõ lệnh trong bình luận mới nhất, thay userNN bằng tài khoản mình phân cho bạn (user01 … user20).
Lần đầu máy hỏi Are you sure you want to continue connecting → gõ yes rồi Enter.
Nhập mật khẩu (khi gõ sẽ không hiện ký tự gì — bình thường), Enter.
Vào được rồi thì gõ: cd ~/lab && ls
Gặp lỗi
Permission denied → sai mật khẩu, gõ lại cẩn thận.
REMOTE HOST IDENTIFICATION HAS CHANGED → gõ ssh-keygen -R "[HOST]:PORT" (HOST, PORT lấy ở bình luận mới nhất) rồi đăng nhập lại.
Máy không có lệnh ssh → giơ tay, mình hỗ trợ.
Mỗi bạn dùng đúng tài khoản của mình, không đăng nhập tài khoản người khác — bài làm được thu theo tài khoản.
Các bạn, các anh chị học viên,
Mỗi buổi thực hành mình sẽ đăng thông tin máy ở **bình luận mới nhất** của issue này (máy thay đổi theo từng buổi, nên luôn xem bình luận mới nhất).
**Cách đăng nhập**
1. Windows: mở **PowerShell** · macOS/Linux: mở **Terminal**.
2. Gõ lệnh trong bình luận mới nhất, thay `userNN` bằng tài khoản mình phân cho bạn (`user01` … `user20`).
3. Lần đầu máy hỏi `Are you sure you want to continue connecting` → gõ `yes` rồi Enter.
4. Nhập mật khẩu (khi gõ sẽ không hiện ký tự gì — bình thường), Enter.
5. Vào được rồi thì gõ: `cd ~/lab && ls`
**Gặp lỗi**
- `Permission denied` → sai mật khẩu, gõ lại cẩn thận.
- `REMOTE HOST IDENTIFICATION HAS CHANGED` → gõ `ssh-keygen -R "[HOST]:PORT"` (HOST, PORT lấy ở bình luận mới nhất) rồi đăng nhập lại.
- Máy không có lệnh `ssh` → giơ tay, mình hỗ trợ.
Mỗi bạn dùng **đúng tài khoản của mình**, không đăng nhập tài khoản người khác — bài làm được thu theo tài khoản.
Vào được rồi thì "khám" máy một chút (gõ từng dòng, xem kết quả):
Xem gì
Lệnh
Mình là ai
whoami
CPU của bạn
nproc → ra 2: máy có nhiều nhân hơn nhưng chia cho cả lớp, mỗi bạn 2 nhân
Loại CPU
lscpu | grep "Model name"
RAM
free -h (cột total, available)
Ổ đĩa
df -h ~
GPU
nvidia-smi (tên card, bộ nhớ GPU, đang dùng bao nhiêu %)
Theo dõi trực tiếp
htop (CPU/RAM) · nvtop (GPU) — bấm q để thoát
Thư viện Python đang có
pip list
Phiên bản các thư viện chính:
python -c 'import numpy, pandas, sklearn, xgboost, matplotlib; [print(f"{m.__name__:12} {m.__version__}") for m in (numpy, pandas, sklearn, xgboost, matplotlib)]'
Thử chạy 1 mô hình nhỏ trên GPU (thấy GPU OK là được):
python -c 'import numpy as np, xgboost as xgb; X=np.random.rand(2000,10); y=(X[:,0]>0.5).astype(int); xgb.XGBClassifier(device="cuda", n_estimators=20).fit(X,y); print("GPU OK")'
Mẹo: mở 2 cửa sổ, một bên chạy nvtop, bên kia chạy lệnh GPU ở trên — xem GPU nhảy lên.
**Buổi thực hành 12/10/2026**
```
ssh -p 10908 userNN@171.239.253.185
```
- Tài khoản: `user01` … `user20` (theo số mình phân)
- Mật khẩu: `bkacad2026`
---
**Vào được rồi thì "khám" máy một chút** (gõ từng dòng, xem kết quả):
| Xem gì | Lệnh |
|---|---|
| Mình là ai | `whoami` |
| CPU của bạn | `nproc` → ra **2**: máy có nhiều nhân hơn nhưng chia cho cả lớp, mỗi bạn 2 nhân |
| Loại CPU | `lscpu \| grep "Model name"` |
| RAM | `free -h` (cột `total`, `available`) |
| Ổ đĩa | `df -h ~` |
| GPU | `nvidia-smi` (tên card, bộ nhớ GPU, đang dùng bao nhiêu %) |
| Theo dõi trực tiếp | `htop` (CPU/RAM) · `nvtop` (GPU) — bấm `q` để thoát |
| Thư viện Python đang có | `pip list` |
Phiên bản các thư viện chính:
```
python -c 'import numpy, pandas, sklearn, xgboost, matplotlib; [print(f"{m.__name__:12} {m.__version__}") for m in (numpy, pandas, sklearn, xgboost, matplotlib)]'
```
Thử chạy 1 mô hình nhỏ trên GPU (thấy `GPU OK` là được):
```
python -c 'import numpy as np, xgboost as xgb; X=np.random.rand(2000,10); y=(X[:,0]>0.5).astype(int); xgb.XGBClassifier(device="cuda", n_estimators=20).fit(X,y); print("GPU OK")'
```
Mẹo: mở 2 cửa sổ, một bên chạy `nvtop`, bên kia chạy lệnh GPU ở trên — xem GPU nhảy lên.
Dùng PuTTY: Host 124.60.192.12, Port 50552; trước khi bấm Open, vào Connection → SSH → Tunnels: Source port8888, Destination127.0.0.1:88NN → bấm Add → rồi Open và đăng nhập như bình thường.
Bước 2 — Bật Jupyter của bạn
Trong cửa sổ SSH vừa vào, gõ:
lab-jupyter
Máy in ra một đường link dạng http://localhost:8888/lab?token=... — giữ nguyên cửa sổ này mở suốt lúc làm bài (đóng cửa sổ là Jupyter tắt).
Bước 3 — Mở trình duyệt
Copy nguyên đường link đó, dán vào trình duyệt (Chrome / Edge / Firefox) trên laptop của bạn. Lần đầu mở có thể mất 1–2 phút mới hiện xong trang, cứ chờ.
Bước 4 — Làm bài
Bên trái: mở thư mục notebooks → bấm đúp vào bài mình chỉ định (ví dụ Lab_Python_Honeypot.ipynb).
Góc trên bên phải phải ghi Python (lớp CSAI).
Bấm vào một ô code → nhấn Shift + Enter: ô đó chạy, kết quả hiện ngay bên dưới, con trỏ nhảy sang ô kế tiếp.
Chạy lần lượt từ trên xuống (bước sau dùng kết quả của bước trước). Ô đang chạy hiện [*], chạy xong hiện số [1], [2]…
Ô có dòng ✏️ SỬA: đổi số / chữ ở đó rồi Shift + Enter lại để thử.
Sửa hỏng hoặc muốn chạy lại từ đầu cho sạch: menu Kernel → Restart Kernel and Run All Cells.
Gặp lỗi?
Hiện tượng
Cách xử lý
Trình duyệt báo không kết nối được localhost:8888
cửa sổ SSH đã đóng, hoặc lệnh ssh thiếu phần -L 8888:127.0.0.1:88NN → vào lại SSH đúng lệnh ở Bước 1 rồi chạy lab-jupyter
Cửa sổ SSH hiện liên tục channel 3: open failed: connect failed: Connection refused
Jupyter chưa chạy (hoặc đã tắt) → gõ lab-jupyter trong cửa sổ đó, mở link mới nó in ra
lab-jupyter báo "đã chạy rồi"
đóng cửa sổ SSH cũ, vào lại theo Bước 1 rồi chạy lab-jupyter
Laptop báo cổng 8888 đang bận
đổi 8888 thành 8889 ở cả lệnh ssh và đường link
Link báo sai token / bắt nhập mật khẩu
mỗi lần chạy lab-jupyter là một token mới → dùng link của lần chạy gần nhất
Làm xong: bấm Ctrl + C trong cửa sổ SSH để tắt Jupyter.
Chỉ dùng terminal (không cần Jupyter)
ssh -p 50552 userNN@124.60.192.12
(Tuỳ chọn) "Khám" máy một chút (gõ từng dòng, xem kết quả):
Xem gì
Lệnh
Mình là ai
whoami
CPU của bạn
nproc → ra 2: máy có nhiều nhân hơn nhưng chia cho cả lớp, mỗi bạn 2 nhân
Loại CPU
lscpu | grep "Model name"
RAM
free -h (cột total, available)
Ổ đĩa
df -h ~
GPU
nvidia-smi (tên card, bộ nhớ GPU, đang dùng bao nhiêu %)
Theo dõi trực tiếp
htop (CPU/RAM) · nvtop (GPU) — bấm q để thoát
Thư viện Python đang có
pip list
Phiên bản các thư viện chính:
python -c 'import numpy, pandas, sklearn, xgboost, matplotlib; [print(f"{m.__name__:12} {m.__version__}") for m in (numpy, pandas, sklearn, xgboost, matplotlib)]'
Thử chạy 1 mô hình nhỏ trên GPU (thấy GPU OK là được):
python -c 'import numpy as np, xgboost as xgb; X=np.random.rand(2000,10); y=(X[:,0]>0.5).astype(int); xgb.XGBClassifier(device="cuda", n_estimators=20).fit(X,y); print("GPU OK")'
Mẹo: mở 2 cửa sổ, một bên chạy nvtop, bên kia chạy lệnh GPU ở trên — xem GPU nhảy lên.
**Buổi thực hành 13/10/2026**
- Máy: `124.60.192.12`, cổng SSH `50552`
- Tài khoản: `user01` … `user20` (theo số mình phân)
- Mật khẩu: `bkacad2026`
---
## Làm bài bằng Jupyter (cách mặc định)
Mỗi bước là **một ô**: bấm chạy là thấy kết quả ngay dưới ô, sửa số rồi chạy lại để thử.
### Bước 1 — Vào máy bằng SSH có "đường hầm" tới Jupyter của bạn
Cổng Jupyter của bạn = **8800 + số tài khoản**: `user05` → `8805`, `user12` → `8812`, `user20` → `8820`.
Trên laptop, mở **Windows Terminal / PowerShell** (hoặc Terminal trên macOS/Linux), gõ (thay `NN` bằng số tài khoản của bạn):
```
ssh -L 8888:127.0.0.1:88NN -p 50552 userNN@124.60.192.12
```
Ví dụ tài khoản `user05`:
```
ssh -L 8888:127.0.0.1:8805 -p 50552 user05@124.60.192.12
```
Dùng **PuTTY**: Host `124.60.192.12`, Port `50552`; trước khi bấm Open, vào *Connection → SSH → Tunnels*: **Source port** `8888`, **Destination** `127.0.0.1:88NN` → bấm **Add** → rồi Open và đăng nhập như bình thường.
### Bước 2 — Bật Jupyter của bạn
Trong cửa sổ SSH vừa vào, gõ:
```
lab-jupyter
```
Máy in ra một đường link dạng `http://localhost:8888/lab?token=...` — **giữ nguyên cửa sổ này mở** suốt lúc làm bài (đóng cửa sổ là Jupyter tắt).
### Bước 3 — Mở trình duyệt
Copy **nguyên đường link** đó, dán vào trình duyệt (Chrome / Edge / Firefox) **trên laptop của bạn**. Lần đầu mở có thể mất **1–2 phút** mới hiện xong trang, cứ chờ.
### Bước 4 — Làm bài
- Bên trái: mở thư mục **`notebooks`** → bấm đúp vào bài mình chỉ định (ví dụ **`Lab_Python_Honeypot.ipynb`**).
- Góc trên bên phải phải ghi **Python (lớp CSAI)**.
- Bấm vào một ô code → nhấn **Shift + Enter**: ô đó chạy, kết quả hiện ngay bên dưới, con trỏ nhảy sang ô kế tiếp.
- Chạy **lần lượt từ trên xuống** (bước sau dùng kết quả của bước trước). Ô đang chạy hiện `[*]`, chạy xong hiện số `[1]`, `[2]`…
- Ô có dòng **✏️ SỬA**: đổi số / chữ ở đó rồi Shift + Enter lại để thử.
- Sửa hỏng hoặc muốn chạy lại từ đầu cho sạch: menu **Kernel → Restart Kernel and Run All Cells**.
### Gặp lỗi?
| Hiện tượng | Cách xử lý |
|---|---|
| Trình duyệt báo không kết nối được `localhost:8888` | cửa sổ SSH đã đóng, hoặc lệnh `ssh` thiếu phần `-L 8888:127.0.0.1:88NN` → vào lại SSH đúng lệnh ở Bước 1 rồi chạy `lab-jupyter` |
| Cửa sổ SSH hiện liên tục `channel 3: open failed: connect failed: Connection refused` | Jupyter chưa chạy (hoặc đã tắt) → gõ `lab-jupyter` trong cửa sổ đó, mở **link mới** nó in ra |
| `lab-jupyter` báo "đã chạy rồi" | đóng cửa sổ SSH cũ, vào lại theo Bước 1 rồi chạy `lab-jupyter` |
| Laptop báo cổng 8888 đang bận | đổi `8888` thành `8889` ở **cả** lệnh `ssh` và đường link |
| Link báo sai token / bắt nhập mật khẩu | mỗi lần chạy `lab-jupyter` là một token mới → dùng link của **lần chạy gần nhất** |
Làm xong: bấm **Ctrl + C** trong cửa sổ SSH để tắt Jupyter.
---
## Chỉ dùng terminal (không cần Jupyter)
```
ssh -p 50552 userNN@124.60.192.12
```
**(Tuỳ chọn) "Khám" máy một chút** (gõ từng dòng, xem kết quả):
| Xem gì | Lệnh |
|---|---|
| Mình là ai | `whoami` |
| CPU của bạn | `nproc` → ra **2**: máy có nhiều nhân hơn nhưng chia cho cả lớp, mỗi bạn 2 nhân |
| Loại CPU | `lscpu \| grep "Model name"` |
| RAM | `free -h` (cột `total`, `available`) |
| Ổ đĩa | `df -h ~` |
| GPU | `nvidia-smi` (tên card, bộ nhớ GPU, đang dùng bao nhiêu %) |
| Theo dõi trực tiếp | `htop` (CPU/RAM) · `nvtop` (GPU) — bấm `q` để thoát |
| Thư viện Python đang có | `pip list` |
Phiên bản các thư viện chính:
```
python -c 'import numpy, pandas, sklearn, xgboost, matplotlib; [print(f"{m.__name__:12} {m.__version__}") for m in (numpy, pandas, sklearn, xgboost, matplotlib)]'
```
Thử chạy 1 mô hình nhỏ trên GPU (thấy `GPU OK` là được):
```
python -c 'import numpy as np, xgboost as xgb; X=np.random.rand(2000,10); y=(X[:,0]>0.5).astype(int); xgb.XGBClassifier(device="cuda", n_estimators=20).fit(X,y); print("GPU OK")'
```
Mẹo: mở 2 cửa sổ, một bên chạy `nvtop`, bên kia chạy lệnh GPU ở trên — xem GPU nhảy lên.
Dùng PuTTY: Host 122.59.250.166, Port 41659; trước khi bấm Open, vào Connection → SSH → Tunnels: Source port8888, Destination127.0.0.1:88NN → bấm Add → rồi Open và đăng nhập như bình thường.
Bước 2 — Bật Jupyter của bạn
Trong cửa sổ SSH vừa vào, gõ:
lab-jupyter
Máy in ra một đường link dạng http://localhost:8888/lab?token=... — giữ nguyên cửa sổ này mở suốt lúc làm bài (đóng cửa sổ là Jupyter tắt).
Bước 3 — Mở trình duyệt
Copy nguyên đường link đó, dán vào trình duyệt (Chrome / Edge / Firefox) trên laptop của bạn. Lần đầu mở có thể mất 1–2 phút mới hiện xong trang, cứ chờ.
Bước 4 — Làm bài
Bên trái: mở thư mục notebooks → bấm đúp vào bài mình chỉ định (ví dụ Lab_Python_Honeypot.ipynb).
Góc trên bên phải phải ghi Python (lớp CSAI).
Bấm vào một ô code → nhấn Shift + Enter: ô đó chạy, kết quả hiện ngay bên dưới, con trỏ nhảy sang ô kế tiếp.
Chạy lần lượt từ trên xuống (bước sau dùng kết quả của bước trước). Ô đang chạy hiện [*], chạy xong hiện số [1], [2]…
Ô có dòng ✏️ SỬA: đổi số / chữ ở đó rồi Shift + Enter lại để thử.
Sửa hỏng hoặc muốn chạy lại từ đầu cho sạch: menu Kernel → Restart Kernel and Run All Cells.
Gặp lỗi?
Hiện tượng
Cách xử lý
Trình duyệt báo không kết nối được localhost:8888
cửa sổ SSH đã đóng, hoặc lệnh ssh thiếu phần -L 8888:127.0.0.1:88NN → vào lại SSH đúng lệnh ở Bước 1 rồi chạy lab-jupyter
Cửa sổ SSH hiện liên tục channel 3: open failed: connect failed: Connection refused
Jupyter chưa chạy (hoặc đã tắt) → gõ lab-jupyter trong cửa sổ đó, mở link mới nó in ra
lab-jupyter báo "đã chạy rồi"
đóng cửa sổ SSH cũ, vào lại theo Bước 1 rồi chạy lab-jupyter
Laptop báo cổng 8888 đang bận
đổi 8888 thành 8889 ở cả lệnh ssh và đường link
Link báo sai token / bắt nhập mật khẩu
mỗi lần chạy lab-jupyter là một token mới → dùng link của lần chạy gần nhất
Làm xong: bấm Ctrl + C trong cửa sổ SSH để tắt Jupyter.
Chỉ dùng terminal (không cần Jupyter)
ssh -p 41659 userNN@122.59.250.166
(Tuỳ chọn) "Khám" máy một chút (gõ từng dòng, xem kết quả):
Xem gì
Lệnh
Mình là ai
whoami
CPU của bạn
nproc → ra 2: máy có nhiều nhân hơn nhưng chia cho cả lớp, mỗi bạn 2 nhân
Loại CPU
lscpu | grep "Model name"
RAM
free -h (cột total, available)
Ổ đĩa
df -h ~
GPU
nvidia-smi (tên card, bộ nhớ GPU, đang dùng bao nhiêu %)
Theo dõi trực tiếp
htop (CPU/RAM) · nvtop (GPU) — bấm q để thoát
Thư viện Python đang có
pip list
Phiên bản các thư viện chính:
python -c 'import numpy, pandas, sklearn, xgboost, matplotlib; [print(f"{m.__name__:12} {m.__version__}") for m in (numpy, pandas, sklearn, xgboost, matplotlib)]'
Thử chạy 1 mô hình nhỏ trên GPU (thấy GPU OK là được):
python -c 'import numpy as np, xgboost as xgb; X=np.random.rand(2000,10); y=(X[:,0]>0.5).astype(int); xgb.XGBClassifier(device="cuda", n_estimators=20).fit(X,y); print("GPU OK")'
Mẹo: mở 2 cửa sổ, một bên chạy nvtop, bên kia chạy lệnh GPU ở trên — xem GPU nhảy lên.
**Buổi thực hành 14/10/2026**
- Máy: `122.59.250.166`, cổng SSH `41659`
- Tài khoản: `user01` … `user20` (theo số mình phân)
- Mật khẩu: `bkacad2026`
---
## Làm bài bằng Jupyter (cách mặc định)
Mỗi bước là **một ô**: bấm chạy là thấy kết quả ngay dưới ô, sửa số rồi chạy lại để thử.
### Bước 1 — Vào máy bằng SSH có "đường hầm" tới Jupyter của bạn
Cổng Jupyter của bạn = **8800 + số tài khoản**: `user05` → `8805`, `user12` → `8812`, `user20` → `8820`.
Trên laptop, mở **Windows Terminal / PowerShell** (hoặc Terminal trên macOS/Linux), gõ (thay `NN` bằng số tài khoản của bạn):
```
ssh -L 8888:127.0.0.1:88NN -p 41659 userNN@122.59.250.166
```
Ví dụ tài khoản `user05`:
```
ssh -L 8888:127.0.0.1:8805 -p 41659 user05@122.59.250.166
```
Dùng **PuTTY**: Host `122.59.250.166`, Port `41659`; trước khi bấm Open, vào *Connection → SSH → Tunnels*: **Source port** `8888`, **Destination** `127.0.0.1:88NN` → bấm **Add** → rồi Open và đăng nhập như bình thường.
### Bước 2 — Bật Jupyter của bạn
Trong cửa sổ SSH vừa vào, gõ:
```
lab-jupyter
```
Máy in ra một đường link dạng `http://localhost:8888/lab?token=...` — **giữ nguyên cửa sổ này mở** suốt lúc làm bài (đóng cửa sổ là Jupyter tắt).
### Bước 3 — Mở trình duyệt
Copy **nguyên đường link** đó, dán vào trình duyệt (Chrome / Edge / Firefox) **trên laptop của bạn**. Lần đầu mở có thể mất **1–2 phút** mới hiện xong trang, cứ chờ.
### Bước 4 — Làm bài
- Bên trái: mở thư mục **`notebooks`** → bấm đúp vào bài mình chỉ định (ví dụ **`Lab_Python_Honeypot.ipynb`**).
- Góc trên bên phải phải ghi **Python (lớp CSAI)**.
- Bấm vào một ô code → nhấn **Shift + Enter**: ô đó chạy, kết quả hiện ngay bên dưới, con trỏ nhảy sang ô kế tiếp.
- Chạy **lần lượt từ trên xuống** (bước sau dùng kết quả của bước trước). Ô đang chạy hiện `[*]`, chạy xong hiện số `[1]`, `[2]`…
- Ô có dòng **✏️ SỬA**: đổi số / chữ ở đó rồi Shift + Enter lại để thử.
- Sửa hỏng hoặc muốn chạy lại từ đầu cho sạch: menu **Kernel → Restart Kernel and Run All Cells**.
### Gặp lỗi?
| Hiện tượng | Cách xử lý |
|---|---|
| Trình duyệt báo không kết nối được `localhost:8888` | cửa sổ SSH đã đóng, hoặc lệnh `ssh` thiếu phần `-L 8888:127.0.0.1:88NN` → vào lại SSH đúng lệnh ở Bước 1 rồi chạy `lab-jupyter` |
| Cửa sổ SSH hiện liên tục `channel 3: open failed: connect failed: Connection refused` | Jupyter chưa chạy (hoặc đã tắt) → gõ `lab-jupyter` trong cửa sổ đó, mở **link mới** nó in ra |
| `lab-jupyter` báo "đã chạy rồi" | đóng cửa sổ SSH cũ, vào lại theo Bước 1 rồi chạy `lab-jupyter` |
| Laptop báo cổng 8888 đang bận | đổi `8888` thành `8889` ở **cả** lệnh `ssh` và đường link |
| Link báo sai token / bắt nhập mật khẩu | mỗi lần chạy `lab-jupyter` là một token mới → dùng link của **lần chạy gần nhất** |
Làm xong: bấm **Ctrl + C** trong cửa sổ SSH để tắt Jupyter.
---
## Chỉ dùng terminal (không cần Jupyter)
```
ssh -p 41659 userNN@122.59.250.166
```
**(Tuỳ chọn) "Khám" máy một chút** (gõ từng dòng, xem kết quả):
| Xem gì | Lệnh |
|---|---|
| Mình là ai | `whoami` |
| CPU của bạn | `nproc` → ra **2**: máy có nhiều nhân hơn nhưng chia cho cả lớp, mỗi bạn 2 nhân |
| Loại CPU | `lscpu \| grep "Model name"` |
| RAM | `free -h` (cột `total`, `available`) |
| Ổ đĩa | `df -h ~` |
| GPU | `nvidia-smi` (tên card, bộ nhớ GPU, đang dùng bao nhiêu %) |
| Theo dõi trực tiếp | `htop` (CPU/RAM) · `nvtop` (GPU) — bấm `q` để thoát |
| Thư viện Python đang có | `pip list` |
Phiên bản các thư viện chính:
```
python -c 'import numpy, pandas, sklearn, xgboost, matplotlib; [print(f"{m.__name__:12} {m.__version__}") for m in (numpy, pandas, sklearn, xgboost, matplotlib)]'
```
Thử chạy 1 mô hình nhỏ trên GPU (thấy `GPU OK` là được):
```
python -c 'import numpy as np, xgboost as xgb; X=np.random.rand(2000,10); y=(X[:,0]>0.5).astype(int); xgb.XGBClassifier(device="cuda", n_estimators=20).fit(X,y); print("GPU OK")'
```
Mẹo: mở 2 cửa sổ, một bên chạy `nvtop`, bên kia chạy lệnh GPU ở trên — xem GPU nhảy lên.
Dùng PuTTY: Host 1.208.108.242, Port 58470; trước khi bấm Open, vào Connection → SSH → Tunnels: Source port8888, Destination127.0.0.1:88NN → bấm Add → rồi Open và đăng nhập như bình thường.
Bước 2 — Bật Jupyter của bạn
Trong cửa sổ SSH vừa vào, gõ:
lab-jupyter
Máy in ra một đường link dạng http://localhost:8888/lab?token=... — giữ nguyên cửa sổ này mở suốt lúc làm bài (đóng cửa sổ là Jupyter tắt).
Bước 3 — Mở trình duyệt
Copy nguyên đường link đó, dán vào trình duyệt (Chrome / Edge / Firefox) trên laptop của bạn. Lần đầu mở có thể mất 1–2 phút mới hiện xong trang, cứ chờ.
Bước 4 — Làm bài
Bên trái: mở thư mục notebooks → bấm đúp vào bài mình chỉ định (ví dụ Lab_Python_Honeypot.ipynb).
Góc trên bên phải phải ghi Python (lớp CSAI).
Bấm vào một ô code → nhấn Shift + Enter: ô đó chạy, kết quả hiện ngay bên dưới, con trỏ nhảy sang ô kế tiếp.
Chạy lần lượt từ trên xuống (bước sau dùng kết quả của bước trước). Ô đang chạy hiện [*], chạy xong hiện số [1], [2]…
Ô có dòng ✏️ SỬA: đổi số / chữ ở đó rồi Shift + Enter lại để thử.
Sửa hỏng hoặc muốn chạy lại từ đầu cho sạch: menu Kernel → Restart Kernel and Run All Cells.
Gặp lỗi?
Hiện tượng
Cách xử lý
Trình duyệt báo không kết nối được localhost:8888
cửa sổ SSH đã đóng, hoặc lệnh ssh thiếu phần -L 8888:127.0.0.1:88NN → vào lại SSH đúng lệnh ở Bước 1 rồi chạy lab-jupyter
Cửa sổ SSH hiện liên tục channel 3: open failed: connect failed: Connection refused
Jupyter chưa chạy (hoặc đã tắt) → gõ lab-jupyter trong cửa sổ đó, mở link mới nó in ra
lab-jupyter báo "đã chạy rồi"
đóng cửa sổ SSH cũ, vào lại theo Bước 1 rồi chạy lab-jupyter
Laptop báo cổng 8888 đang bận
đổi 8888 thành 8889 ở cả lệnh ssh và đường link
Link báo sai token / bắt nhập mật khẩu
mỗi lần chạy lab-jupyter là một token mới → dùng link của lần chạy gần nhất
Làm xong: bấm Ctrl + C trong cửa sổ SSH để tắt Jupyter.
Chỉ dùng terminal (không cần Jupyter)
ssh -p 58470 userNN@1.208.108.242
(Tuỳ chọn) "Khám" máy một chút (gõ từng dòng, xem kết quả):
Xem gì
Lệnh
Mình là ai
whoami
CPU của bạn
nproc → ra 2: máy có nhiều nhân hơn nhưng chia cho cả lớp, mỗi bạn 2 nhân
Loại CPU
lscpu | grep "Model name"
RAM
free -h (cột total, available)
Ổ đĩa
df -h ~
GPU
nvidia-smi (tên card, bộ nhớ GPU, đang dùng bao nhiêu %)
Theo dõi trực tiếp
htop (CPU/RAM) · nvtop (GPU) — bấm q để thoát
Thư viện Python đang có
pip list
Phiên bản các thư viện chính:
python -c 'import numpy, pandas, sklearn, xgboost, matplotlib; [print(f"{m.__name__:12} {m.__version__}") for m in (numpy, pandas, sklearn, xgboost, matplotlib)]'
Thử chạy 1 mô hình nhỏ trên GPU (thấy GPU OK là được):
python -c 'import numpy as np, xgboost as xgb; X=np.random.rand(2000,10); y=(X[:,0]>0.5).astype(int); xgb.XGBClassifier(device="cuda", n_estimators=20).fit(X,y); print("GPU OK")'
Mẹo: mở 2 cửa sổ, một bên chạy nvtop, bên kia chạy lệnh GPU ở trên — xem GPU nhảy lên.
**Buổi thực hành 15/10/2026**
- Máy: `1.208.108.242`, cổng SSH `58470`
- Tài khoản: `user01` … `user20` (theo số mình phân)
- Mật khẩu: `bkacad2026`
---
## Làm bài bằng Jupyter (cách mặc định)
Mỗi bước là **một ô**: bấm chạy là thấy kết quả ngay dưới ô, sửa số rồi chạy lại để thử.
### Bước 1 — Vào máy bằng SSH có "đường hầm" tới Jupyter của bạn
Cổng Jupyter của bạn = **8800 + số tài khoản**: `user05` → `8805`, `user12` → `8812`, `user20` → `8820`.
Trên laptop, mở **Windows Terminal / PowerShell** (hoặc Terminal trên macOS/Linux), gõ (thay `NN` bằng số tài khoản của bạn):
```
ssh -L 8888:127.0.0.1:88NN -p 58470 userNN@1.208.108.242
```
Ví dụ tài khoản `user05`:
```
ssh -L 8888:127.0.0.1:8805 -p 58470 user05@1.208.108.242
```
Dùng **PuTTY**: Host `1.208.108.242`, Port `58470`; trước khi bấm Open, vào *Connection → SSH → Tunnels*: **Source port** `8888`, **Destination** `127.0.0.1:88NN` → bấm **Add** → rồi Open và đăng nhập như bình thường.
### Bước 2 — Bật Jupyter của bạn
Trong cửa sổ SSH vừa vào, gõ:
```
lab-jupyter
```
Máy in ra một đường link dạng `http://localhost:8888/lab?token=...` — **giữ nguyên cửa sổ này mở** suốt lúc làm bài (đóng cửa sổ là Jupyter tắt).
### Bước 3 — Mở trình duyệt
Copy **nguyên đường link** đó, dán vào trình duyệt (Chrome / Edge / Firefox) **trên laptop của bạn**. Lần đầu mở có thể mất **1–2 phút** mới hiện xong trang, cứ chờ.
### Bước 4 — Làm bài
- Bên trái: mở thư mục **`notebooks`** → bấm đúp vào bài mình chỉ định (ví dụ **`Lab_Python_Honeypot.ipynb`**).
- Góc trên bên phải phải ghi **Python (lớp CSAI)**.
- Bấm vào một ô code → nhấn **Shift + Enter**: ô đó chạy, kết quả hiện ngay bên dưới, con trỏ nhảy sang ô kế tiếp.
- Chạy **lần lượt từ trên xuống** (bước sau dùng kết quả của bước trước). Ô đang chạy hiện `[*]`, chạy xong hiện số `[1]`, `[2]`…
- Ô có dòng **✏️ SỬA**: đổi số / chữ ở đó rồi Shift + Enter lại để thử.
- Sửa hỏng hoặc muốn chạy lại từ đầu cho sạch: menu **Kernel → Restart Kernel and Run All Cells**.
### Gặp lỗi?
| Hiện tượng | Cách xử lý |
|---|---|
| Trình duyệt báo không kết nối được `localhost:8888` | cửa sổ SSH đã đóng, hoặc lệnh `ssh` thiếu phần `-L 8888:127.0.0.1:88NN` → vào lại SSH đúng lệnh ở Bước 1 rồi chạy `lab-jupyter` |
| Cửa sổ SSH hiện liên tục `channel 3: open failed: connect failed: Connection refused` | Jupyter chưa chạy (hoặc đã tắt) → gõ `lab-jupyter` trong cửa sổ đó, mở **link mới** nó in ra |
| `lab-jupyter` báo "đã chạy rồi" | đóng cửa sổ SSH cũ, vào lại theo Bước 1 rồi chạy `lab-jupyter` |
| Laptop báo cổng 8888 đang bận | đổi `8888` thành `8889` ở **cả** lệnh `ssh` và đường link |
| Link báo sai token / bắt nhập mật khẩu | mỗi lần chạy `lab-jupyter` là một token mới → dùng link của **lần chạy gần nhất** |
Làm xong: bấm **Ctrl + C** trong cửa sổ SSH để tắt Jupyter.
---
## Chỉ dùng terminal (không cần Jupyter)
```
ssh -p 58470 userNN@1.208.108.242
```
**(Tuỳ chọn) "Khám" máy một chút** (gõ từng dòng, xem kết quả):
| Xem gì | Lệnh |
|---|---|
| Mình là ai | `whoami` |
| CPU của bạn | `nproc` → ra **2**: máy có nhiều nhân hơn nhưng chia cho cả lớp, mỗi bạn 2 nhân |
| Loại CPU | `lscpu \| grep "Model name"` |
| RAM | `free -h` (cột `total`, `available`) |
| Ổ đĩa | `df -h ~` |
| GPU | `nvidia-smi` (tên card, bộ nhớ GPU, đang dùng bao nhiêu %) |
| Theo dõi trực tiếp | `htop` (CPU/RAM) · `nvtop` (GPU) — bấm `q` để thoát |
| Thư viện Python đang có | `pip list` |
Phiên bản các thư viện chính:
```
python -c 'import numpy, pandas, sklearn, xgboost, matplotlib; [print(f"{m.__name__:12} {m.__version__}") for m in (numpy, pandas, sklearn, xgboost, matplotlib)]'
```
Thử chạy 1 mô hình nhỏ trên GPU (thấy `GPU OK` là được):
```
python -c 'import numpy as np, xgboost as xgb; X=np.random.rand(2000,10); y=(X[:,0]>0.5).astype(int); xgb.XGBClassifier(device="cuda", n_estimators=20).fit(X,y); print("GPU OK")'
```
Mẹo: mở 2 cửa sổ, một bên chạy `nvtop`, bên kia chạy lệnh GPU ở trên — xem GPU nhảy lên.
Dùng PuTTY: Host 1.208.108.242, Port 40094; trước khi bấm Open, vào Connection → SSH → Tunnels: Source port8888, Destination127.0.0.1:88NN → bấm Add → rồi Open và đăng nhập như bình thường.
Bước 2 — Bật Jupyter của bạn
Trong cửa sổ SSH vừa vào, gõ:
lab-jupyter
Máy in ra một đường link dạng http://localhost:8888/lab?token=... — giữ nguyên cửa sổ này mở suốt lúc làm bài (đóng cửa sổ là Jupyter tắt).
Bước 3 — Mở trình duyệt
Copy nguyên đường link đó, dán vào trình duyệt (Chrome / Edge / Firefox) trên laptop của bạn. Lần đầu mở có thể mất 1–2 phút mới hiện xong trang, cứ chờ.
Bước 4 — Làm bài
Bên trái: mở thư mục notebooks → bấm đúp vào bài mình chỉ định (ví dụ Lab_Python_Honeypot.ipynb).
Góc trên bên phải phải ghi Python (lớp CSAI).
Bấm vào một ô code → nhấn Shift + Enter: ô đó chạy, kết quả hiện ngay bên dưới, con trỏ nhảy sang ô kế tiếp.
Chạy lần lượt từ trên xuống (bước sau dùng kết quả của bước trước). Ô đang chạy hiện [*], chạy xong hiện số [1], [2]…
Ô có dòng ✏️ SỬA: đổi số / chữ ở đó rồi Shift + Enter lại để thử.
Sửa hỏng hoặc muốn chạy lại từ đầu cho sạch: menu Kernel → Restart Kernel and Run All Cells.
Gặp lỗi?
Hiện tượng
Cách xử lý
Trình duyệt báo không kết nối được localhost:8888
cửa sổ SSH đã đóng, hoặc lệnh ssh thiếu phần -L 8888:127.0.0.1:88NN → vào lại SSH đúng lệnh ở Bước 1 rồi chạy lab-jupyter
Cửa sổ SSH hiện liên tục channel 3: open failed: connect failed: Connection refused
Jupyter chưa chạy (hoặc đã tắt) → gõ lab-jupyter trong cửa sổ đó, mở link mới nó in ra
lab-jupyter báo "đã chạy rồi"
đóng cửa sổ SSH cũ, vào lại theo Bước 1 rồi chạy lab-jupyter
Laptop báo cổng 8888 đang bận
đổi 8888 thành 8889 ở cả lệnh ssh và đường link
Link báo sai token / bắt nhập mật khẩu
mỗi lần chạy lab-jupyter là một token mới → dùng link của lần chạy gần nhất
Làm xong: bấm Ctrl + C trong cửa sổ SSH để tắt Jupyter.
Chỉ dùng terminal (không cần Jupyter)
ssh -p 40094 userNN@1.208.108.242
(Tuỳ chọn) "Khám" máy một chút (gõ từng dòng, xem kết quả):
Xem gì
Lệnh
Mình là ai
whoami
CPU của bạn
nproc → ra 2: máy có nhiều nhân hơn nhưng chia cho cả lớp, mỗi bạn 2 nhân
Loại CPU
lscpu | grep "Model name"
RAM
free -h (cột total, available)
Ổ đĩa
df -h ~
GPU
nvidia-smi (tên card, bộ nhớ GPU, đang dùng bao nhiêu %)
Theo dõi trực tiếp
htop (CPU/RAM) · nvtop (GPU) — bấm q để thoát
Thư viện Python đang có
pip list
Phiên bản các thư viện chính:
python -c 'import numpy, pandas, sklearn, xgboost, matplotlib; [print(f"{m.__name__:12} {m.__version__}") for m in (numpy, pandas, sklearn, xgboost, matplotlib)]'
Thử chạy 1 mô hình nhỏ trên GPU (thấy GPU OK là được):
python -c 'import numpy as np, xgboost as xgb; X=np.random.rand(2000,10); y=(X[:,0]>0.5).astype(int); xgb.XGBClassifier(device="cuda", n_estimators=20).fit(X,y); print("GPU OK")'
Mẹo: mở 2 cửa sổ, một bên chạy nvtop, bên kia chạy lệnh GPU ở trên — xem GPU nhảy lên.
**Buổi thực hành 15/10/2026**
- Máy: `1.208.108.242`, cổng SSH `40094`
- Tài khoản: `user01` … `user20` (theo số mình phân)
- Mật khẩu: `bkacad2026`
---
## Làm bài bằng Jupyter (cách mặc định)
Mỗi bước là **một ô**: bấm chạy là thấy kết quả ngay dưới ô, sửa số rồi chạy lại để thử.
### Bước 1 — Vào máy bằng SSH có "đường hầm" tới Jupyter của bạn
Cổng Jupyter của bạn = **8800 + số tài khoản**: `user05` → `8805`, `user12` → `8812`, `user20` → `8820`.
Trên laptop, mở **Windows Terminal / PowerShell** (hoặc Terminal trên macOS/Linux), gõ (thay `NN` bằng số tài khoản của bạn):
```
ssh -L 8888:127.0.0.1:88NN -p 40094 userNN@1.208.108.242
```
Ví dụ tài khoản `user05`:
```
ssh -L 8888:127.0.0.1:8805 -p 40094 user05@1.208.108.242
```
Dùng **PuTTY**: Host `1.208.108.242`, Port `40094`; trước khi bấm Open, vào *Connection → SSH → Tunnels*: **Source port** `8888`, **Destination** `127.0.0.1:88NN` → bấm **Add** → rồi Open và đăng nhập như bình thường.
### Bước 2 — Bật Jupyter của bạn
Trong cửa sổ SSH vừa vào, gõ:
```
lab-jupyter
```
Máy in ra một đường link dạng `http://localhost:8888/lab?token=...` — **giữ nguyên cửa sổ này mở** suốt lúc làm bài (đóng cửa sổ là Jupyter tắt).
### Bước 3 — Mở trình duyệt
Copy **nguyên đường link** đó, dán vào trình duyệt (Chrome / Edge / Firefox) **trên laptop của bạn**. Lần đầu mở có thể mất **1–2 phút** mới hiện xong trang, cứ chờ.
### Bước 4 — Làm bài
- Bên trái: mở thư mục **`notebooks`** → bấm đúp vào bài mình chỉ định (ví dụ **`Lab_Python_Honeypot.ipynb`**).
- Góc trên bên phải phải ghi **Python (lớp CSAI)**.
- Bấm vào một ô code → nhấn **Shift + Enter**: ô đó chạy, kết quả hiện ngay bên dưới, con trỏ nhảy sang ô kế tiếp.
- Chạy **lần lượt từ trên xuống** (bước sau dùng kết quả của bước trước). Ô đang chạy hiện `[*]`, chạy xong hiện số `[1]`, `[2]`…
- Ô có dòng **✏️ SỬA**: đổi số / chữ ở đó rồi Shift + Enter lại để thử.
- Sửa hỏng hoặc muốn chạy lại từ đầu cho sạch: menu **Kernel → Restart Kernel and Run All Cells**.
### Gặp lỗi?
| Hiện tượng | Cách xử lý |
|---|---|
| Trình duyệt báo không kết nối được `localhost:8888` | cửa sổ SSH đã đóng, hoặc lệnh `ssh` thiếu phần `-L 8888:127.0.0.1:88NN` → vào lại SSH đúng lệnh ở Bước 1 rồi chạy `lab-jupyter` |
| Cửa sổ SSH hiện liên tục `channel 3: open failed: connect failed: Connection refused` | Jupyter chưa chạy (hoặc đã tắt) → gõ `lab-jupyter` trong cửa sổ đó, mở **link mới** nó in ra |
| `lab-jupyter` báo "đã chạy rồi" | đóng cửa sổ SSH cũ, vào lại theo Bước 1 rồi chạy `lab-jupyter` |
| Laptop báo cổng 8888 đang bận | đổi `8888` thành `8889` ở **cả** lệnh `ssh` và đường link |
| Link báo sai token / bắt nhập mật khẩu | mỗi lần chạy `lab-jupyter` là một token mới → dùng link của **lần chạy gần nhất** |
Làm xong: bấm **Ctrl + C** trong cửa sổ SSH để tắt Jupyter.
---
## Chỉ dùng terminal (không cần Jupyter)
```
ssh -p 40094 userNN@1.208.108.242
```
**(Tuỳ chọn) "Khám" máy một chút** (gõ từng dòng, xem kết quả):
| Xem gì | Lệnh |
|---|---|
| Mình là ai | `whoami` |
| CPU của bạn | `nproc` → ra **2**: máy có nhiều nhân hơn nhưng chia cho cả lớp, mỗi bạn 2 nhân |
| Loại CPU | `lscpu \| grep "Model name"` |
| RAM | `free -h` (cột `total`, `available`) |
| Ổ đĩa | `df -h ~` |
| GPU | `nvidia-smi` (tên card, bộ nhớ GPU, đang dùng bao nhiêu %) |
| Theo dõi trực tiếp | `htop` (CPU/RAM) · `nvtop` (GPU) — bấm `q` để thoát |
| Thư viện Python đang có | `pip list` |
Phiên bản các thư viện chính:
```
python -c 'import numpy, pandas, sklearn, xgboost, matplotlib; [print(f"{m.__name__:12} {m.__version__}") for m in (numpy, pandas, sklearn, xgboost, matplotlib)]'
```
Thử chạy 1 mô hình nhỏ trên GPU (thấy `GPU OK` là được):
```
python -c 'import numpy as np, xgboost as xgb; X=np.random.rand(2000,10); y=(X[:,0]>0.5).astype(int); xgb.XGBClassifier(device="cuda", n_estimators=20).fit(X,y); print("GPU OK")'
```
Mẹo: mở 2 cửa sổ, một bên chạy `nvtop`, bên kia chạy lệnh GPU ở trên — xem GPU nhảy lên.
Dùng PuTTY: Host 202.122.49.242, Port 40508; trước khi bấm Open, vào Connection → SSH → Tunnels: Source port8888, Destination127.0.0.1:88NN → bấm Add → rồi Open và đăng nhập như bình thường.
Bước 2 — Bật Jupyter của bạn
Trong cửa sổ SSH vừa vào, gõ:
lab-jupyter
Máy in ra một đường link dạng http://localhost:8888/lab?token=... — giữ nguyên cửa sổ này mở suốt lúc làm bài (đóng cửa sổ là Jupyter tắt).
Bước 3 — Mở trình duyệt
Copy nguyên đường link đó, dán vào trình duyệt (Chrome / Edge / Firefox) trên laptop của bạn. Lần đầu mở có thể mất 1–2 phút mới hiện xong trang, cứ chờ.
Bước 4 — Làm bài
Bên trái: mở thư mục notebooks → bấm đúp vào bài mình chỉ định (ví dụ Lab_Python_Honeypot.ipynb).
Góc trên bên phải phải ghi Python (lớp CSAI).
Bấm vào một ô code → nhấn Shift + Enter: ô đó chạy, kết quả hiện ngay bên dưới, con trỏ nhảy sang ô kế tiếp.
Chạy lần lượt từ trên xuống (bước sau dùng kết quả của bước trước). Ô đang chạy hiện [*], chạy xong hiện số [1], [2]…
Ô có dòng ✏️ SỬA: đổi số / chữ ở đó rồi Shift + Enter lại để thử.
Sửa hỏng hoặc muốn chạy lại từ đầu cho sạch: menu Kernel → Restart Kernel and Run All Cells.
Gặp lỗi?
Hiện tượng
Cách xử lý
Trình duyệt báo không kết nối được localhost:8888
cửa sổ SSH đã đóng, hoặc lệnh ssh thiếu phần -L 8888:127.0.0.1:88NN → vào lại SSH đúng lệnh ở Bước 1 rồi chạy lab-jupyter
Cửa sổ SSH hiện liên tục channel 3: open failed: connect failed: Connection refused
Jupyter chưa chạy (hoặc đã tắt) → gõ lab-jupyter trong cửa sổ đó, mở link mới nó in ra
lab-jupyter báo "đã chạy rồi"
đóng cửa sổ SSH cũ, vào lại theo Bước 1 rồi chạy lab-jupyter
Laptop báo cổng 8888 đang bận
đổi 8888 thành 8889 ở cả lệnh ssh và đường link
Link báo sai token / bắt nhập mật khẩu
mỗi lần chạy lab-jupyter là một token mới → dùng link của lần chạy gần nhất
Làm xong: bấm Ctrl + C trong cửa sổ SSH để tắt Jupyter.
Chỉ dùng terminal (không cần Jupyter)
ssh -p 40508 userNN@202.122.49.242
(Tuỳ chọn) "Khám" máy một chút (gõ từng dòng, xem kết quả):
Xem gì
Lệnh
Mình là ai
whoami
CPU của bạn
nproc → ra 2: máy có nhiều nhân hơn nhưng chia cho cả lớp, mỗi bạn 2 nhân
Loại CPU
lscpu | grep "Model name"
RAM
free -h (cột total, available)
Ổ đĩa
df -h ~
GPU
nvidia-smi (tên card, bộ nhớ GPU, đang dùng bao nhiêu %)
Theo dõi trực tiếp
htop (CPU/RAM) · nvtop (GPU) — bấm q để thoát
Thư viện Python đang có
pip list
Phiên bản các thư viện chính:
python -c 'import numpy, pandas, sklearn, xgboost, matplotlib; [print(f"{m.__name__:12} {m.__version__}") for m in (numpy, pandas, sklearn, xgboost, matplotlib)]'
Thử chạy 1 mô hình nhỏ trên GPU (thấy GPU OK là được):
python -c 'import numpy as np, xgboost as xgb; X=np.random.rand(2000,10); y=(X[:,0]>0.5).astype(int); xgb.XGBClassifier(device="cuda", n_estimators=20).fit(X,y); print("GPU OK")'
Mẹo: mở 2 cửa sổ, một bên chạy nvtop, bên kia chạy lệnh GPU ở trên — xem GPU nhảy lên.
**Buổi thực hành 16/10/2026**
- Máy: `202.122.49.242`, cổng SSH `40508`
- Tài khoản: `user01` … `user20` (theo số mình phân)
- Mật khẩu: `bkacad2026`
---
## Làm bài bằng Jupyter (cách mặc định)
Mỗi bước là **một ô**: bấm chạy là thấy kết quả ngay dưới ô, sửa số rồi chạy lại để thử.
### Bước 1 — Vào máy bằng SSH có "đường hầm" tới Jupyter của bạn
Cổng Jupyter của bạn = **8800 + số tài khoản**: `user05` → `8805`, `user12` → `8812`, `user20` → `8820`.
Trên laptop, mở **Windows Terminal / PowerShell** (hoặc Terminal trên macOS/Linux), gõ (thay `NN` bằng số tài khoản của bạn):
```
ssh -L 8888:127.0.0.1:88NN -p 40508 userNN@202.122.49.242
```
Ví dụ tài khoản `user05`:
```
ssh -L 8888:127.0.0.1:8805 -p 40508 user05@202.122.49.242
```
Dùng **PuTTY**: Host `202.122.49.242`, Port `40508`; trước khi bấm Open, vào *Connection → SSH → Tunnels*: **Source port** `8888`, **Destination** `127.0.0.1:88NN` → bấm **Add** → rồi Open và đăng nhập như bình thường.
### Bước 2 — Bật Jupyter của bạn
Trong cửa sổ SSH vừa vào, gõ:
```
lab-jupyter
```
Máy in ra một đường link dạng `http://localhost:8888/lab?token=...` — **giữ nguyên cửa sổ này mở** suốt lúc làm bài (đóng cửa sổ là Jupyter tắt).
### Bước 3 — Mở trình duyệt
Copy **nguyên đường link** đó, dán vào trình duyệt (Chrome / Edge / Firefox) **trên laptop của bạn**. Lần đầu mở có thể mất **1–2 phút** mới hiện xong trang, cứ chờ.
### Bước 4 — Làm bài
- Bên trái: mở thư mục **`notebooks`** → bấm đúp vào bài mình chỉ định (ví dụ **`Lab_Python_Honeypot.ipynb`**).
- Góc trên bên phải phải ghi **Python (lớp CSAI)**.
- Bấm vào một ô code → nhấn **Shift + Enter**: ô đó chạy, kết quả hiện ngay bên dưới, con trỏ nhảy sang ô kế tiếp.
- Chạy **lần lượt từ trên xuống** (bước sau dùng kết quả của bước trước). Ô đang chạy hiện `[*]`, chạy xong hiện số `[1]`, `[2]`…
- Ô có dòng **✏️ SỬA**: đổi số / chữ ở đó rồi Shift + Enter lại để thử.
- Sửa hỏng hoặc muốn chạy lại từ đầu cho sạch: menu **Kernel → Restart Kernel and Run All Cells**.
### Gặp lỗi?
| Hiện tượng | Cách xử lý |
|---|---|
| Trình duyệt báo không kết nối được `localhost:8888` | cửa sổ SSH đã đóng, hoặc lệnh `ssh` thiếu phần `-L 8888:127.0.0.1:88NN` → vào lại SSH đúng lệnh ở Bước 1 rồi chạy `lab-jupyter` |
| Cửa sổ SSH hiện liên tục `channel 3: open failed: connect failed: Connection refused` | Jupyter chưa chạy (hoặc đã tắt) → gõ `lab-jupyter` trong cửa sổ đó, mở **link mới** nó in ra |
| `lab-jupyter` báo "đã chạy rồi" | đóng cửa sổ SSH cũ, vào lại theo Bước 1 rồi chạy `lab-jupyter` |
| Laptop báo cổng 8888 đang bận | đổi `8888` thành `8889` ở **cả** lệnh `ssh` và đường link |
| Link báo sai token / bắt nhập mật khẩu | mỗi lần chạy `lab-jupyter` là một token mới → dùng link của **lần chạy gần nhất** |
Làm xong: bấm **Ctrl + C** trong cửa sổ SSH để tắt Jupyter.
---
## Chỉ dùng terminal (không cần Jupyter)
```
ssh -p 40508 userNN@202.122.49.242
```
**(Tuỳ chọn) "Khám" máy một chút** (gõ từng dòng, xem kết quả):
| Xem gì | Lệnh |
|---|---|
| Mình là ai | `whoami` |
| CPU của bạn | `nproc` → ra **2**: máy có nhiều nhân hơn nhưng chia cho cả lớp, mỗi bạn 2 nhân |
| Loại CPU | `lscpu \| grep "Model name"` |
| RAM | `free -h` (cột `total`, `available`) |
| Ổ đĩa | `df -h ~` |
| GPU | `nvidia-smi` (tên card, bộ nhớ GPU, đang dùng bao nhiêu %) |
| Theo dõi trực tiếp | `htop` (CPU/RAM) · `nvtop` (GPU) — bấm `q` để thoát |
| Thư viện Python đang có | `pip list` |
Phiên bản các thư viện chính:
```
python -c 'import numpy, pandas, sklearn, xgboost, matplotlib; [print(f"{m.__name__:12} {m.__version__}") for m in (numpy, pandas, sklearn, xgboost, matplotlib)]'
```
Thử chạy 1 mô hình nhỏ trên GPU (thấy `GPU OK` là được):
```
python -c 'import numpy as np, xgboost as xgb; X=np.random.rand(2000,10); y=(X[:,0]>0.5).astype(int); xgb.XGBClassifier(device="cuda", n_estimators=20).fit(X,y); print("GPU OK")'
```
Mẹo: mở 2 cửa sổ, một bên chạy `nvtop`, bên kia chạy lệnh GPU ở trên — xem GPU nhảy lên.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Các bạn, các anh chị học viên,
Mỗi buổi thực hành mình sẽ đăng thông tin máy ở bình luận mới nhất của issue này (máy thay đổi theo từng buổi, nên luôn xem bình luận mới nhất).
Cách đăng nhập
userNNbằng tài khoản mình phân cho bạn (user01…user20).Are you sure you want to continue connecting→ gõyesrồi Enter.cd ~/lab && lsGặp lỗi
Permission denied→ sai mật khẩu, gõ lại cẩn thận.REMOTE HOST IDENTIFICATION HAS CHANGED→ gõssh-keygen -R "[HOST]:PORT"(HOST, PORT lấy ở bình luận mới nhất) rồi đăng nhập lại.ssh→ giơ tay, mình hỗ trợ.Mỗi bạn dùng đúng tài khoản của mình, không đăng nhập tài khoản người khác — bài làm được thu theo tài khoản.
Buổi thực hành 12/10/2026
user01…user20(theo số mình phân)bkacad2026Vào được rồi thì "khám" máy một chút (gõ từng dòng, xem kết quả):
whoaminproc→ ra 2: máy có nhiều nhân hơn nhưng chia cho cả lớp, mỗi bạn 2 nhânlscpu | grep "Model name"free -h(cộttotal,available)df -h ~nvidia-smi(tên card, bộ nhớ GPU, đang dùng bao nhiêu %)htop(CPU/RAM) ·nvtop(GPU) — bấmqđể thoátpip listPhiên bản các thư viện chính:
Thử chạy 1 mô hình nhỏ trên GPU (thấy
GPU OKlà được):Mẹo: mở 2 cửa sổ, một bên chạy
nvtop, bên kia chạy lệnh GPU ở trên — xem GPU nhảy lên.Buổi thực hành 13/10/2026
124.60.192.12, cổng SSH50552user01…user20(theo số mình phân)bkacad2026Làm bài bằng Jupyter (cách mặc định)
Mỗi bước là một ô: bấm chạy là thấy kết quả ngay dưới ô, sửa số rồi chạy lại để thử.
Bước 1 — Vào máy bằng SSH có "đường hầm" tới Jupyter của bạn
Cổng Jupyter của bạn = 8800 + số tài khoản:
user05→8805,user12→8812,user20→8820.Trên laptop, mở Windows Terminal / PowerShell (hoặc Terminal trên macOS/Linux), gõ (thay
NNbằng số tài khoản của bạn):Ví dụ tài khoản
user05:Dùng PuTTY: Host
124.60.192.12, Port50552; trước khi bấm Open, vào Connection → SSH → Tunnels: Source port8888, Destination127.0.0.1:88NN→ bấm Add → rồi Open và đăng nhập như bình thường.Bước 2 — Bật Jupyter của bạn
Trong cửa sổ SSH vừa vào, gõ:
Máy in ra một đường link dạng
http://localhost:8888/lab?token=...— giữ nguyên cửa sổ này mở suốt lúc làm bài (đóng cửa sổ là Jupyter tắt).Bước 3 — Mở trình duyệt
Copy nguyên đường link đó, dán vào trình duyệt (Chrome / Edge / Firefox) trên laptop của bạn. Lần đầu mở có thể mất 1–2 phút mới hiện xong trang, cứ chờ.
Bước 4 — Làm bài
notebooks→ bấm đúp vào bài mình chỉ định (ví dụLab_Python_Honeypot.ipynb).[*], chạy xong hiện số[1],[2]…Gặp lỗi?
localhost:8888sshthiếu phần-L 8888:127.0.0.1:88NN→ vào lại SSH đúng lệnh ở Bước 1 rồi chạylab-jupyterchannel 3: open failed: connect failed: Connection refusedlab-jupytertrong cửa sổ đó, mở link mới nó in ralab-jupyterbáo "đã chạy rồi"lab-jupyter8888thành8889ở cả lệnhsshvà đường linklab-jupyterlà một token mới → dùng link của lần chạy gần nhấtLàm xong: bấm Ctrl + C trong cửa sổ SSH để tắt Jupyter.
Chỉ dùng terminal (không cần Jupyter)
(Tuỳ chọn) "Khám" máy một chút (gõ từng dòng, xem kết quả):
whoaminproc→ ra 2: máy có nhiều nhân hơn nhưng chia cho cả lớp, mỗi bạn 2 nhânlscpu | grep "Model name"free -h(cộttotal,available)df -h ~nvidia-smi(tên card, bộ nhớ GPU, đang dùng bao nhiêu %)htop(CPU/RAM) ·nvtop(GPU) — bấmqđể thoátpip listPhiên bản các thư viện chính:
Thử chạy 1 mô hình nhỏ trên GPU (thấy
GPU OKlà được):Mẹo: mở 2 cửa sổ, một bên chạy
nvtop, bên kia chạy lệnh GPU ở trên — xem GPU nhảy lên.Buổi thực hành 14/10/2026
122.59.250.166, cổng SSH41659user01…user20(theo số mình phân)bkacad2026Làm bài bằng Jupyter (cách mặc định)
Mỗi bước là một ô: bấm chạy là thấy kết quả ngay dưới ô, sửa số rồi chạy lại để thử.
Bước 1 — Vào máy bằng SSH có "đường hầm" tới Jupyter của bạn
Cổng Jupyter của bạn = 8800 + số tài khoản:
user05→8805,user12→8812,user20→8820.Trên laptop, mở Windows Terminal / PowerShell (hoặc Terminal trên macOS/Linux), gõ (thay
NNbằng số tài khoản của bạn):Ví dụ tài khoản
user05:Dùng PuTTY: Host
122.59.250.166, Port41659; trước khi bấm Open, vào Connection → SSH → Tunnels: Source port8888, Destination127.0.0.1:88NN→ bấm Add → rồi Open và đăng nhập như bình thường.Bước 2 — Bật Jupyter của bạn
Trong cửa sổ SSH vừa vào, gõ:
Máy in ra một đường link dạng
http://localhost:8888/lab?token=...— giữ nguyên cửa sổ này mở suốt lúc làm bài (đóng cửa sổ là Jupyter tắt).Bước 3 — Mở trình duyệt
Copy nguyên đường link đó, dán vào trình duyệt (Chrome / Edge / Firefox) trên laptop của bạn. Lần đầu mở có thể mất 1–2 phút mới hiện xong trang, cứ chờ.
Bước 4 — Làm bài
notebooks→ bấm đúp vào bài mình chỉ định (ví dụLab_Python_Honeypot.ipynb).[*], chạy xong hiện số[1],[2]…Gặp lỗi?
localhost:8888sshthiếu phần-L 8888:127.0.0.1:88NN→ vào lại SSH đúng lệnh ở Bước 1 rồi chạylab-jupyterchannel 3: open failed: connect failed: Connection refusedlab-jupytertrong cửa sổ đó, mở link mới nó in ralab-jupyterbáo "đã chạy rồi"lab-jupyter8888thành8889ở cả lệnhsshvà đường linklab-jupyterlà một token mới → dùng link của lần chạy gần nhấtLàm xong: bấm Ctrl + C trong cửa sổ SSH để tắt Jupyter.
Chỉ dùng terminal (không cần Jupyter)
(Tuỳ chọn) "Khám" máy một chút (gõ từng dòng, xem kết quả):
whoaminproc→ ra 2: máy có nhiều nhân hơn nhưng chia cho cả lớp, mỗi bạn 2 nhânlscpu | grep "Model name"free -h(cộttotal,available)df -h ~nvidia-smi(tên card, bộ nhớ GPU, đang dùng bao nhiêu %)htop(CPU/RAM) ·nvtop(GPU) — bấmqđể thoátpip listPhiên bản các thư viện chính:
Thử chạy 1 mô hình nhỏ trên GPU (thấy
GPU OKlà được):Mẹo: mở 2 cửa sổ, một bên chạy
nvtop, bên kia chạy lệnh GPU ở trên — xem GPU nhảy lên.Buổi thực hành 15/10/2026
1.208.108.242, cổng SSH58470user01…user20(theo số mình phân)bkacad2026Làm bài bằng Jupyter (cách mặc định)
Mỗi bước là một ô: bấm chạy là thấy kết quả ngay dưới ô, sửa số rồi chạy lại để thử.
Bước 1 — Vào máy bằng SSH có "đường hầm" tới Jupyter của bạn
Cổng Jupyter của bạn = 8800 + số tài khoản:
user05→8805,user12→8812,user20→8820.Trên laptop, mở Windows Terminal / PowerShell (hoặc Terminal trên macOS/Linux), gõ (thay
NNbằng số tài khoản của bạn):Ví dụ tài khoản
user05:Dùng PuTTY: Host
1.208.108.242, Port58470; trước khi bấm Open, vào Connection → SSH → Tunnels: Source port8888, Destination127.0.0.1:88NN→ bấm Add → rồi Open và đăng nhập như bình thường.Bước 2 — Bật Jupyter của bạn
Trong cửa sổ SSH vừa vào, gõ:
Máy in ra một đường link dạng
http://localhost:8888/lab?token=...— giữ nguyên cửa sổ này mở suốt lúc làm bài (đóng cửa sổ là Jupyter tắt).Bước 3 — Mở trình duyệt
Copy nguyên đường link đó, dán vào trình duyệt (Chrome / Edge / Firefox) trên laptop của bạn. Lần đầu mở có thể mất 1–2 phút mới hiện xong trang, cứ chờ.
Bước 4 — Làm bài
notebooks→ bấm đúp vào bài mình chỉ định (ví dụLab_Python_Honeypot.ipynb).[*], chạy xong hiện số[1],[2]…Gặp lỗi?
localhost:8888sshthiếu phần-L 8888:127.0.0.1:88NN→ vào lại SSH đúng lệnh ở Bước 1 rồi chạylab-jupyterchannel 3: open failed: connect failed: Connection refusedlab-jupytertrong cửa sổ đó, mở link mới nó in ralab-jupyterbáo "đã chạy rồi"lab-jupyter8888thành8889ở cả lệnhsshvà đường linklab-jupyterlà một token mới → dùng link của lần chạy gần nhấtLàm xong: bấm Ctrl + C trong cửa sổ SSH để tắt Jupyter.
Chỉ dùng terminal (không cần Jupyter)
(Tuỳ chọn) "Khám" máy một chút (gõ từng dòng, xem kết quả):
whoaminproc→ ra 2: máy có nhiều nhân hơn nhưng chia cho cả lớp, mỗi bạn 2 nhânlscpu | grep "Model name"free -h(cộttotal,available)df -h ~nvidia-smi(tên card, bộ nhớ GPU, đang dùng bao nhiêu %)htop(CPU/RAM) ·nvtop(GPU) — bấmqđể thoátpip listPhiên bản các thư viện chính:
Thử chạy 1 mô hình nhỏ trên GPU (thấy
GPU OKlà được):Mẹo: mở 2 cửa sổ, một bên chạy
nvtop, bên kia chạy lệnh GPU ở trên — xem GPU nhảy lên.Buổi thực hành 15/10/2026
1.208.108.242, cổng SSH40094user01…user20(theo số mình phân)bkacad2026Làm bài bằng Jupyter (cách mặc định)
Mỗi bước là một ô: bấm chạy là thấy kết quả ngay dưới ô, sửa số rồi chạy lại để thử.
Bước 1 — Vào máy bằng SSH có "đường hầm" tới Jupyter của bạn
Cổng Jupyter của bạn = 8800 + số tài khoản:
user05→8805,user12→8812,user20→8820.Trên laptop, mở Windows Terminal / PowerShell (hoặc Terminal trên macOS/Linux), gõ (thay
NNbằng số tài khoản của bạn):Ví dụ tài khoản
user05:Dùng PuTTY: Host
1.208.108.242, Port40094; trước khi bấm Open, vào Connection → SSH → Tunnels: Source port8888, Destination127.0.0.1:88NN→ bấm Add → rồi Open và đăng nhập như bình thường.Bước 2 — Bật Jupyter của bạn
Trong cửa sổ SSH vừa vào, gõ:
Máy in ra một đường link dạng
http://localhost:8888/lab?token=...— giữ nguyên cửa sổ này mở suốt lúc làm bài (đóng cửa sổ là Jupyter tắt).Bước 3 — Mở trình duyệt
Copy nguyên đường link đó, dán vào trình duyệt (Chrome / Edge / Firefox) trên laptop của bạn. Lần đầu mở có thể mất 1–2 phút mới hiện xong trang, cứ chờ.
Bước 4 — Làm bài
notebooks→ bấm đúp vào bài mình chỉ định (ví dụLab_Python_Honeypot.ipynb).[*], chạy xong hiện số[1],[2]…Gặp lỗi?
localhost:8888sshthiếu phần-L 8888:127.0.0.1:88NN→ vào lại SSH đúng lệnh ở Bước 1 rồi chạylab-jupyterchannel 3: open failed: connect failed: Connection refusedlab-jupytertrong cửa sổ đó, mở link mới nó in ralab-jupyterbáo "đã chạy rồi"lab-jupyter8888thành8889ở cả lệnhsshvà đường linklab-jupyterlà một token mới → dùng link của lần chạy gần nhấtLàm xong: bấm Ctrl + C trong cửa sổ SSH để tắt Jupyter.
Chỉ dùng terminal (không cần Jupyter)
(Tuỳ chọn) "Khám" máy một chút (gõ từng dòng, xem kết quả):
whoaminproc→ ra 2: máy có nhiều nhân hơn nhưng chia cho cả lớp, mỗi bạn 2 nhânlscpu | grep "Model name"free -h(cộttotal,available)df -h ~nvidia-smi(tên card, bộ nhớ GPU, đang dùng bao nhiêu %)htop(CPU/RAM) ·nvtop(GPU) — bấmqđể thoátpip listPhiên bản các thư viện chính:
Thử chạy 1 mô hình nhỏ trên GPU (thấy
GPU OKlà được):Mẹo: mở 2 cửa sổ, một bên chạy
nvtop, bên kia chạy lệnh GPU ở trên — xem GPU nhảy lên.Buổi thực hành 16/10/2026
202.122.49.242, cổng SSH40508user01…user20(theo số mình phân)bkacad2026Làm bài bằng Jupyter (cách mặc định)
Mỗi bước là một ô: bấm chạy là thấy kết quả ngay dưới ô, sửa số rồi chạy lại để thử.
Bước 1 — Vào máy bằng SSH có "đường hầm" tới Jupyter của bạn
Cổng Jupyter của bạn = 8800 + số tài khoản:
user05→8805,user12→8812,user20→8820.Trên laptop, mở Windows Terminal / PowerShell (hoặc Terminal trên macOS/Linux), gõ (thay
NNbằng số tài khoản của bạn):Ví dụ tài khoản
user05:Dùng PuTTY: Host
202.122.49.242, Port40508; trước khi bấm Open, vào Connection → SSH → Tunnels: Source port8888, Destination127.0.0.1:88NN→ bấm Add → rồi Open và đăng nhập như bình thường.Bước 2 — Bật Jupyter của bạn
Trong cửa sổ SSH vừa vào, gõ:
Máy in ra một đường link dạng
http://localhost:8888/lab?token=...— giữ nguyên cửa sổ này mở suốt lúc làm bài (đóng cửa sổ là Jupyter tắt).Bước 3 — Mở trình duyệt
Copy nguyên đường link đó, dán vào trình duyệt (Chrome / Edge / Firefox) trên laptop của bạn. Lần đầu mở có thể mất 1–2 phút mới hiện xong trang, cứ chờ.
Bước 4 — Làm bài
notebooks→ bấm đúp vào bài mình chỉ định (ví dụLab_Python_Honeypot.ipynb).[*], chạy xong hiện số[1],[2]…Gặp lỗi?
localhost:8888sshthiếu phần-L 8888:127.0.0.1:88NN→ vào lại SSH đúng lệnh ở Bước 1 rồi chạylab-jupyterchannel 3: open failed: connect failed: Connection refusedlab-jupytertrong cửa sổ đó, mở link mới nó in ralab-jupyterbáo "đã chạy rồi"lab-jupyter8888thành8889ở cả lệnhsshvà đường linklab-jupyterlà một token mới → dùng link của lần chạy gần nhấtLàm xong: bấm Ctrl + C trong cửa sổ SSH để tắt Jupyter.
Chỉ dùng terminal (không cần Jupyter)
(Tuỳ chọn) "Khám" máy một chút (gõ từng dòng, xem kết quả):
whoaminproc→ ra 2: máy có nhiều nhân hơn nhưng chia cho cả lớp, mỗi bạn 2 nhânlscpu | grep "Model name"free -h(cộttotal,available)df -h ~nvidia-smi(tên card, bộ nhớ GPU, đang dùng bao nhiêu %)htop(CPU/RAM) ·nvtop(GPU) — bấmqđể thoátpip listPhiên bản các thư viện chính:
Thử chạy 1 mô hình nhỏ trên GPU (thấy
GPU OKlà được):Mẹo: mở 2 cửa sổ, một bên chạy
nvtop, bên kia chạy lệnh GPU ở trên — xem GPU nhảy lên.