Tạo ssh key và sử dụng ssh key trong git

SSH?

SSH(Secure Shell) là một giao thức mạng dùng để thiết lập kết nối mạng một cách bảo mật.
Khi làm việc với git, ssh sẽ giúp ta trong 2 việc:
1. Bảo mật các kết nối của mình với server.
2. Không phải nhập mật khẩu mỗi lần push code.

Cơ chế làm việc

Bạn sẽ có 2 key: public keyprivate key. Bạn sẽ gửi public key của mình cho git server của bạn (bitbucket hay github chẳng hạn). Xong, ssh-agent sẽ làm tất cả những việc còn lại cho bạn. Mỗi lần bạn push, ssh-agent sẽ tự gửi kèm các thông tin chứng thực đi, github sẽ nhận diện ra bạn, và bạn không cần phải nhập mật khẩu nữa.
Mình giải thích một cách đơn giản nhất có thể, còn nếu bạn muốn tìm hiểu sâu hơn về cơ chế bên trong, vui lòng đọc trang wiki mà mình đưa ở đầu bài

Sinh SSH key

Bước 1: Kiểm tra xem máy bạn có ssh key nào chưa

Mở cửa sổ dòng lệnh (terminal) và chạy lệnh:

Lệnh trên sẽ kiểm tra trong thư mục .ssh (nằm ở thư mục gốc của user bạn đang đăng nhập vào máy, vd trên Mac: /Users/binhcq/.ssh) có ssh key nào chưa, mặc định, các ssh key thường sẽ có dạng:

public key sẽ có đuôi .pub (id_rsa.pub), private key thì không có đuôi (id_rsa)
Nếu có một cặp ssh key nào trong thư mục này (giả sử là id_rsa và id_rsa.pub), bạn có thể bỏ qua Bước 2 và chuyển thẳng sang Bước 3.

Bước 2: Sinh một SSH key mới

  • Chạy lệnh sau trên terminal
  • Để tránh phiền phức sau này, mình khuyên bạn nên để các cài đặt ở mặc định, như lần này, ssh-agent hỏi bạn muốn lưu key của mình ở đâu thì bạn cứ thế mà Enter thôi:
  • Tiếp đến thì nhập mật khẩu cho key của bạn

Lưu ý mật khẩu khi bạn gõ vào nó sẽ không hiển thị mấy dấu ******* như bình thường, nhưng bạn cứ gõ xong rồi Enter thôi. Thêm nữa, bạn nên chọn một mật khẩu ĐỦ MẠNH cho mình, bạn có thể xem thêm lý do tại đây
* Sau khi nhập mật khẩu, bạn sẽ nhận được thông báo về việc mật khẩu đã lưu vào địa chỉ lúc nãy bạn chỉ định:

Bước 3: Thêm key của bạn vào ssh-agent

ssh-agent là trình quản lý ssh key của bạn, công việc của nó thì nãy mình có nói qua ở trên rồi đó.
* Đảm bảo rằng ssh-agent đã được kích hoạt bằng lệnh:

  • Add ssh key của bạn vào ssh-agent

Lưu ý id_rsa chính là private key của bạn, nếu ở bước 2, bạn có key khác thì thay tên key tương ứng vào.

Bước 4: Thêm ssh public key vào tài khoản trên server của bạn (github, bitbucket…)

Copy ssh key vào clipboard:

Sau đó lên tài khoản của bạn, vào mục setting, tìm tới mục Add ssh key và dán nội dung đã copy lúc nãy vào:
Screen Shot 2015-08-06 at 10.52.07 PM

Bước 5: Kiếm tra lại xem mọi thứ đã OK chưa:

Với github thì là ssh -T git@github.com
Có thể bạn sẽ nhận được thông báo về việc thêm host bitbucket vào danh sách tin cậy:

Bạn chỉ việc gõ yes vào terminal rồi Enter là được.
Và bạn sẽ nhận được dòng thông báo thành công:

Hoặc github:

OK, đến đây là bạn đã có thể sử dụng link ssh rồi.

Thêm chút nữa:

Vậy nếu cùng lúc tôi muốn dùng ssh với hai tài khoản của cùng một server (github chẳng hạn) có được không?
Được, nhưng bạn phải sinh 2 ssh key, để biết thêm chi tiết, vui lòng đọc bài viết Sử dụng ssh với 2 tài khoản github cùng 1 lúc của mình.
Còn nếu tôi muốn cùng lúc đưa code của mình lên hai server khác nhau?
Hoàn toàn được, bạn vui lòng đọc bài viết Git remote và việc push source code lên nhiều nơi cùng lúc của mình.
Vậy là với ssh, từ nay bạn sẽ giảm được một phần thao tác rườm ra khi làm việc với git, và tập trung vào chuyên môn của mình hơn 😛

Lập trình và hơn thế nữa

Spread the love
  •  
  •  
  •  
  •  
  •  

Leave a Reply

7 Comments on "Tạo ssh key và sử dụng ssh key trong git"

Notify of
avatar
Sort by:   newest | oldest | most voted
trackback

[…] lạ, sao không có HTTPS? Ở đây mình sử dụng giao thức ssh, mời đọc bài viết Tạo ssh key và sử dụng ssh key trong git của mình để hiểu hơn Khi mới tạo dự án thì chưa có branch nào được tạo, […]

trackback

[…] git, những bài khác các bạn có thể xem tại: 1. Git cho người mới bắt đầu 2. Tạo ssh key và sử dụng ssh key trong git 3. Git ignore và làm việc với .gitignore 4. Xoá file đã tồn tại trong git và cập […]

Dương Hữu Phước
Guest
Dương Hữu Phước

Em muốn bổ xung 1 tí là HTTPs được đề nghị dùng bởi Github(vì HTTP port mở cho tất cả network firewall, nên Github có thể dễ dàng truy cập hơn), và cũng có thể có setting không cần nhập password mỗi lần push code với git config credential.helper store
Nhưng điều này sẽ lưu password của người dùng dưới dạng text và nếu bị hacker tấn công thì hacker có thể dễ dàng lấy được password này.

trackback

[…] tao-ssh-key-va-su-dung-ssh-key-trong-git […]