Quản lý kết nối ssh của bạn dễ dàng hơn với .ssh/config

Thông thường khi bạn phải kết nối với nhiều server thông qua ssh bạn thường sẽ phải dùng lệnh ssh như dưới đây:

# Trong trường hợp server dùng port khác mặc định
ssh username@hostname -p portnumber

# Trong trường hợp bạn phải chỉ định ssh public key
ssh username@hostname -i ~/.ssh/ssh_key_path

# Và trường hợp chỉ định cả portname và ssh public key
ssh username@hostname -i ~/.ssh/ssh_key_path -p portnumber  

Vấn đề là nếu bạn phải quản lý nhiều server ở nhiều dự án khác nhau, bạn nhận được nhiều ssh private key khác nhau. Lúc này để access vào server, bạn có thể sẽ phải tra lại xem server đó sẽ có ip, username, port và sử dụng file ssh private key nào sẽ làm tốn thời gian của bạn.

Để giải quyết vấn đề này, đơn giản là bạn có thể lưu setting của các kết nối ssh bạn đang cần quản lý vào file .ssh/config, nó giống như 1 danh sách các kết nối, và tiện lợi hơn là bạn có thể không cần phải gõ cả lệnh dài như trên mà chỉ cần gõ ssh tên_kết_nối là có thể access được vào server của bạn.

Trong trường hợp quên tên kết nối thì sao ? Chỉ cần 1 lệnh less ~/.ssh/config bạn có thể tra lại được ngay thông tin kết nối của mình. Khá tiện lợi.

.ssh/config là gì ?

Nó là file thiết lập của SSH Client. File này sẽ định nghĩa ra các thông tin của kết nối SSH, giúp bạn không cần cần phải gõ thêm các option của lệnh ssh khi kết nối.

Cách tạo file .ssh/config

Bạn có thể kiểm tra file .ssh/config đã được thiết lập trên máy của mình chưa bằng lệnh

ls ~/.ssh/config  

nếu chưa có thì có thể tạo bằng lệnh

# nếu chưa có folder .ssh, trường hợp này hiếm khi sảy ra nếu bạn đã từng ssh vào server bằng public key rồi 
$ mkdir ~/.ssh
$ chmod 700 .ssh
#tạo file config trong folder .ssh
$ touch ~/.ssh/config

Khai báo nội dung file ssh bằng cách mở file config vừa tạo bằng editor nào đó hoặc đơn giản là dùng nano hay vi có sẵn trên terminal

nano ~/.ssh/config  

và khai báo theo format như ví dụ dưới đây:

# haposoft server 
Host haposoft  
    HostName haposoft.com
    User hapo
    IdentityFile ~/.ssh/test/hapo_private_key
    Port 20022
    TCPKeepAlive yes
    IdentitiesOnly yes

# hapolog server 
Host hapolog  
    HostName 127.0.0.1
    User hapo
    IdentityFile ~/.ssh/test/hapolog_private.key
    Port 22
    TCPKeepAlive yes
    IdentitiesOnly yes

# Funny Site project
Host funny  
    HostName funny.com
    User dev
    IdentityFile ~/.ssh/test/funny_private.key
    Port 10022
    TCPKeepAlive no
    IdentitiesOnly yes

Sau đó thay vì bạn phải gõ lệnh ssh dài như dưới đây để ssh vào server của haposoft.com

ssh hapo@haposoft.com -i ~/.ssh/test/hapo_private_key -p 20022  

thì bạn chỉ cần gõ

ssh haposoft  

là có thể ssh ngon lành

Các thiết lập trong file config sẽ bao gồm

  • Host: tên của kết nối bạn muốn kết nối tới, tên này nên ngắn gọn dễ nhớ vì sau đó bạn sẽ gõ tên này trong lệnh ssh để kết nối thay cho các thiết lập của bạn.

  • HostName : địa chỉ của server, có thể là domain hoặc địa chỉ ip

  • User: login username
  • IdentityFile: SSH private key của kết nối. Nếu bạn dùng ssh private key mặc định của bạn thì không cần khai báo thiết lập này.
  • Port: port của kết nối, nếu server của bạn dùng port mặc định là 22 thì không cần định nghĩa thiết lập này.
  • TCPKeepAlive: Có giữ kết nối hay không? Nếu trong trường hợp muốn giữ kết nối thì thiết lập là yes, nếu không thì thiết lập là no
  • IdentitiesOnly: Nếu cần IdentityFile thì khai báo yes, không cần thì khai báo no
  • ServerAliveInterval: Nếu trong 1 khoảng thời gian mà server không gửi dữ liệu được về cho client thì báo time out theo đơn vị số giây. Ví dụ: 120 là 120s

Related article