Terminal Cheat 1 - Cấu hình ssh cho việc kết nối đến nhiều server
Do phải quản lý khoảng gần 20 cloud server của công ty, nên việc lưu cách kết nối đến server để có thể thao tác nhanh nhất rất cần thiết. Mỗi khi cần kết nối đến server, lại phải lục tài liệu để kiếm thông tin về ip, user, port, password hoặc ssh key. Tôi cũng đã thử qua cách lưu thông tin trong ...
Do phải quản lý khoảng gần 20 cloud server của công ty, nên việc lưu cách kết nối đến server để có thể thao tác nhanh nhất rất cần thiết. Mỗi khi cần kết nối đến server, lại phải lục tài liệu để kiếm thông tin về ip, user, port, password hoặc ssh key. Tôi cũng đã thử qua cách lưu thông tin trong script .sh đến việc tạo alias lệnh kết nối đến server như alias sshServer1='ssh example@hostname'. Việc tạo alias đáp ứng khá tốt nhu cầu của tôi về việc chỉ cần gõ lệnh sshServer1 hoặc sshServer2, nhưng việc quản lý, cập nhật các alias khi có thay đổi về thông tin server rất là mệt mỏi. Và khó khăn trong việc sử dụng scp để truyền file thông qua sftp
Cấu hình các host trong ssh config được thực hiện rất đơn giản. Khi định nghĩa host server1, thì chỉ cần gõ ssh server1 cho việc kết nối server và scp file server1:/path/to/file/on/server khi muốn copy file lên server. Rất đơn giản và linh họat.
Tạo tệp cấu hình ~/.ssh/config
Nếu file ~/.ssh/config không tồn tại, ta cần tạo ra nó touch ~/.ssh/config
Thêm các thông tin cấu hình về server, ví dụ như sau:
Host server1 HostName hostname_or_ip1 User username1 Port 22 Host server2 HostName hostname_or_ip2 User username2 Port 22
Như vậy, chỉ cần ssh server1 và nhập mật khẩu là đã kết nối thành công tới server rồi.
Nhưng khoan, việc nhớ mật khẩu cho 1 server thì dễ, nhưng gần 20 server thì không đuợc, và đâu phải server nào cũng kết nối dạng password, có server dùng ssh key mà.
Nếu server có ssh key, thì cần thêm key vào thông tin config.
Host server1 HostName hostname_or_ip1 User username1 Port 22 IdentityFile /path/to/private/key1
Như vậy, chỉ cần ssh server1 là đã kết nối thành công tới server rồi. Tuyệt vời ~.~
Nhưng với các server dùng mật khẩu thì phải chấp nhận sao?? Tại sao không tạo ssh key cho các server dùng mật khẩu, vừa an toàn hơn, vừa đỡ việc phải đi copy thông tin mật khẩu.
Tạo public-private ssh key cho server
B1. Sinh ra cặp public, private key
ssh-keygen -t rsa -b 2048 -C "username@hostname_or_ip2"
Nhập tên key khi đuợc yêu cầu. Kết quả tạo ra 2 file là keyname (private key) và keyname.pub (public key)
B2. “Tin tưởng” private key ở máy local
ssh-add keyname
B3. Copy public key lên server
ssh-copy-id -i keyname.pub username@hostname_or_ip2
Server sẽ yêu cầu nhập mật khẩu. Bạn yên tâm, đây là lần cuối ta cần nhập mật khẩu khi thực hiện kết nối đến server.
B4. Sửa cấu hình ssh
Host server2 HostName hostname_or_ip2 User username2 Port 22 IdentityFile /path/to/keyname
Cấu hình xong, đi kiếm trà và tận hưởng thôi.