12/08/2018, 16:00

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.

0