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