Gravitational Teleport là một máy chủ SSH để truy cập và quản lý từ xa thông qua SSH và HTTPS các máy chủ Linux.
Các chức năng mà Teleport đem lại cho chúng ta gồm có:
- Ghi/Phát lại phiên SSH
- Quản lý SSH giữa các nhóm, tổ chức và trung tâm dữ liệu. Rất an toàn và dễ dàng, hiệu quả
- SSH vào các cụm Firewall mà cần cổng nào được mở
- Kiểm soát truy cập dựa trên vai trò (RBAC) cho giao thức SSH.
Những tính năng gì và khả năng của Teleport thì mình sẽ tiếp tục đề cập đến sau khi chúng ta cài đặt và sử dụng nó.
I. Đầu tiên chúng ta tiến hành cài đặt Gravitational Teleport vào hệ thống:
Trước tiên thì download source về cái đã, các bạn có thể truy cập vào địa chỉ https://gravitational.com/teleport/download/ để tải về bản mới nhất. Một điều rất đáng mừng đó là có hỗ trợ Linux ARM cho những ai chạy mấy con Raspberry Pi hay chạy trên máy chủ của Scaleway. Còn nếu dùng chip Intel xin mời các bạn theo các bước bên dưới:
wget https://get.gravitational.com/teleport-v2.7.4-linux-amd64-bin.tar.gz
Giải nén ra nào:
tar -xzf teleport-v2.7.4-linux-amd64-bin.tar.gz
Bây giờ vào thư mục của Teleport và cài đặt nó thôi:
cd teleport
sudo ./install
Bạn có thể kiểm tra xem Teleport cài xong được để ở đâu bằng lệnh:
which teleport
Đừng quên tạo thư mục để Teleport lưu dữ liệu lên đó:
mkdir -p /var/lib/teleport
Tới bước này thì coi như là cài đặt xong rồi đó.
Chẳng hạn mình thêm một user mới (để có quyền quản lý thông qua Teleport), mình tiến hành dùng lệnh:
tctl users add phatnlq
Chú ý: phatnlq là một user đã có trên server Linux trước đó, nếu chưa có bạn có thể tạo user này sau cũng được.
Các bạn nhớ đổi sang IP để có thể truy cập được nhé:
Ban đầu nếu bạn thiết lập user đầu tiên, hệ thống sẽ cần mã xác thực từ Google Authenticator, bạn chỉ việc cài ứng dụng này vào điện thoại và quét mã QR trên trang cũng cấp sau đó điền mã số có được là xong.
Sau khi đăng nhập vào bạn sẽ thấy giao diện thế này:
Bây giờ đi ra ngoài (bấm cái dấu x màu đỏ bên góc trái màn hình để tắt giao diện dòng lệnh) bạn bấm vào icon Session, sẽ thấy một các phiên hoạt động SSH:
Tới đây thì bạn có thể thấy tác dụng hữu ích của Teleport là gì rồi đúng không, tất nhiên nó còn nhiều ý nghĩa hơn nữa. Và bạn có thể từ từ khám phá, đời còn dài mà.
II. Chưa dừng lại ở đây đâu các bạn ạ, bây giờ chúng ta tiếp tục thiết lập một Proxy Teleport:
Tạo tập tin /etc/teleport.yaml với nội dung như sau:
auth_service:
# IMPORTANT: this line enables the proxy recording mode:
session_recording: "proxy" # can also be "off" and "on" (default)
# For better security it’s recommended to enable host checking as well,
# this is when the Teleport proxy will verify the identity of the
# nodes. Teleport documentation covers how to issue host certificates,
# but for simplicity of this tutorial we are disabling strict host
# checking here
proxy_checks_host_keys: no
# turn 2FA off to make the tutorial easier to follow
authentication:
second_factor: off
Tiếp tục thiết lập OpenSSH Server:
tctl auth export --type=user > teleport-ca.pub
Tiếp tục:
nano teleport-ca.pub
Bây giờ bạn hãy xóa cert-authority đi:
Sau đó bạn chép vào /etc/ssh/teleport-ca.pub, Khi đó tập tin /etc/ssh/teleport-ca.pub trông sẽ như thế này:
Còn nữa nhé các bạn, bây giờ bạn thêm dòng sau vào tập tin /etc/ssh/sshd_config:
TrustedUserCAKeys /etc/ssh/teleport-ca.pub
Bây giờ chúng ta thử truy cập vào SSH vào máy chủ nãy giờ chúng ta đã thiết lập (vừa đóng vai trò là một master, vừa là một node, vừa là một Proxy):
tsh login --proxy=localhost
Các bạn chú ý, thay localhost bằng một tên miền hay hostname khác khi bạn thiết lập cluster nhé.
Đăng nhập:
tsh ssh localhost
Thử tua lại phiên hoạt động trước đó:
tsh play 3f7821f4-bb52-11e8-990d-080027a342ec
Chú ý: Dãy số trên là ID của phiên hoạt động SSH, bạn có thể lấy nó theo hình sau:
Bây giờ chúng ta thêm một Node nào đó khác, các bạn dùng lệnh:
tctl nodes add
Công việc của các bạn đó là cài đặt Teleport trên một máy khác (theo bước I lớn mình đã trình bày ở đầu bài viết) và chạy dòng lệnh như trên (chung dải IP LAN nhé – trừ khi nào bạn thiết lập IP WAN thì cài ở đâu cũng được và nhớ mở Port 3025).
Dùng lệnh:
tsh --proxy=localhost ls
Để kiểm tra xem có node nào đó Join vào Cluster chưa, vì là minh họa cho các bạn xem nên mình cùng chạy trên một máy. Và kết quả kiểm tra có thể như hình bên dưới:
*Lưu lại diễn biến phiên SSH:
Bạn cần đăng nhập vào Teleport:
tsh --proxy=localhost --insecure login
tsh ssh localhost
Giờ thử gõ vài dòng xem sao:
Bạn vào Web GUI kiểm tra phiên hoạt động gần đây nhất xem kết quả thế nào:
Tất nhiên tính năng của Teleport còn cho phép nhiều người dùng có thể tham gia phiên Session đó sau khi được cấp quyền, các bạn có thể theo dõi trực tiếp phiên làm việc của ai đó và cũng có quyền tham gia nếu được cho phép. Cực kỳ hữu ích khi làm việc nhóm hoặc giúp đỡ từ xa thông qua SSH.
À, còn thiết lập dịch vụ cho Teleport nữa chứ (tự động chạy mỗi khi khởi động hệ thống):
Bạn tạo tập tin /etc/systemd/system/teleport.service với nội dung:
[Unit]
Description=Teleport SSH Service
After=network.target
[Service]
Type=simple
Restart=on-failure
ExecStart=/usr/local/bin/teleport start --pid-file=/var/run/teleport.pid
ExecReload=/bin/kill -HUP $MAINPID
PIDFile=/var/run/teleport.pid
[Install]
WantedBy=multi-user.target
Lưu lại và tiếp tục các lệnh sau:
systemctl daemon-reload
systemctl enable teleport
systemctl start teleport
Sau đó:
sudo systemctl daemon-reload
sudo systemctl enable teleport
Đừng quên chạy dịch vụ:
sudo systemctl start teleport
Kiểm tra xem dịch vụ đã cấu hình và chạy chưa:
systemctl status teleport
Chúc các bạn thành công!
cho mình hỏi với, mình cài teleport lên được buid thêm node add vào server master
sau khi mình add được node lúc tạo mới user thì đường link để tạo user sẽ không còn http://tenservermaster:3080
mà nó lại thành
http://tennode:3080
dẫn đến việc sử dụng otp luôn bị lỗi
failed to validate a token
mặc dù quét đi quét lại token vẫn bị thế
có cách nào để fix lỗi đó không, không biết mình có bị sai bước nào không.
Bạn tham khảo đường link này nhé: https://github.com/gravitational/teleport/issues/98