Mục lục
SSH là gì?
SSH hay còn được gọi là Secure Shell hay Secure Socket Shell là một network protocol dùng để thiết lập các kết nối bảo mật nhằm ngăn chặn các hiện tượng nghe trộm, đánh cắp thông tin trên đường truyền.
Các chương trình trước đây: telnet, rlogin không sử dụng phương pháp mã hoá. Vì thế bất cứ ai cũng có thể nghe trộm thậm chí đọc được toàn bộ nội dung của phiên làm việc bằng cách sử dụng một số công cụ đơn giản. Sử dụng SSH là biện pháp hữu hiệu bảo mật dữ liệu trên đường truyền từ hệ thống này đến hệ thống khác.
Cách hoạt động của SSH
SSH được tạo ra để thay thế cho các chương trình sử dụng cơ chế đăng nhập kém bảo mật như Telnet, rlogin. SSH cũng có tính năng tương tự cung cấp một cơ chế xác thực an toàn hơn. SSH cũng được dùng để thay thế các giao thức truyền tải dữ liệu như FTP, RCP.
SSH sử dụng một cặp public – private key để thiết lập một kết từ xa an toàn giữa 2 bên. Trong đó private key là khoá bí mật sẽ được giữ lại bởi client và public key là khoá công khai có thể chia sẽ cho bất kỳ một bên SSH server nào mà người dùng muốn kết nối đến. Private được sử dụng để truy cập vào các server từ xa (remote server) và giải mã các message.
Khi client thiết lập một kết nối đến remote server sử dụng SSH, một loại các quy trình sẽ xảy ra sau đây:
- Client bắt đầu bằng việc gửi ID tương ứng với cặp khoá private – public key mà nó muốn xác thực lên server
- Server sẽ kiểm tra và tìm kiếm một public tương ứng với ID mà client đã gửi lên
- Nếu một public key được tìm thấy, server sẽ generate một số ngẫu nhiên và sử dụng public key để mã hoá con số này.
- Server tiến hành gửi cho client một message đã được mã hoá bởi public key.
- Client nhận message từ server và sử dụng private key để mã hoá message và nhận lại con số ban đầu được server sinh ra.
- Client sẽ sử dụng con số được giải mã kết hợp với shared session key đang được sử dụng để giao tiếp và sử dụng MD5 để tính toán giá trị băm cho chúng.
- Client gửi mã hash MD5 được tính toán ở trên cho server như một câu trả lời cho con số đã được mã hoá trước đó bởi server.
- Server sử dụng cùng shared session key và con số mà nó đã generate ra để tính ra một mã hash MD5 đem đi so sánh với mã hash mà client gửi lên. Nếu 2 giá trị này trùng khớp thì một kết nối an toàn được thiết lập.
Sau khi quá trình xác thực hoàn tất, cả hai bên thương lượng sử dụng một session key được tại ra bởi thuật toán Diffie-Hellman. Cả client và server sẽ sử dụng chung session key để mã hoá và giải mã trong suốt quá trình giao tiếp với nhau.
Cách generate SSH key trên Mac và Linux
Bước 1: Quá trình generate SSH key trên OsX và Linux đều có cùng các bước, đầu tiên các bạn cần sử dụng lệnh:
ssh-keygen -t rsa -b 4096 -C "[email protected]"
Lệnh này sẽ tạo ra một SSH key tương ứng với email mà bạn đã cung cấp ở câu lệnh trên.
Bước 2: Sau đó bạn sẽ được hỏi “Enter a file in which to save the key.” Bạn có thể điền vào vị trí mà bạn muốn lưu file hoặc enter để đặt nó tại vị trí mặc định.
> Enter a file in which to save the key (/Users/you/.ssh/id_rsa): [Press enter]
Bước 3: Tiếp theo bạn sẽ được hỏi về secure passphrase, passphrase được dùng để tạo thêm một lớp bảo mật bổ sung cho SSH và được hỏi bất cứ khi SSH được sử dụng. Nếu ai đó truy cập vào máy tính chứa private key của bạn thì họ có thể truy cập được các ssh server mà máy tính đang liên kết đến, passphrase giúp các bạn ngăn chặn việc này xảy ra khi kẻ xấu sẽ không biết chính xác passphrase là gì.
> Enter passphrase (empty for no passphrase): [Type a passphrase] > Enter same passphrase again: [Type passphrase again]
Bây giờ, SSH key đã được tạo trên máy của bạn và đặt nó tại ví trí mà bạn đã chỉ định trước đó hoặc tại vị trí mặc định nếu bạn không chỉ định một vị trí cụ thể.
Bước 4: Thêm SSH key vào ssh-agent
SSH-Agent là một công cụ khác của SSH chịu trách nhiệm lưu trữ và bảo vệ private key. Trước khi add SSH key vào ssh-agent hãy đảm bảo là nó đang hoạt động
$ eval "$(ssh-agent -s)" > Agent pid 59566
Sau khi đã đảm bảo ssh-agent đang hoạt động, sử dụng lệnh sau để thên SSH key mới tạo vào ssh-agent
ssh-add -K /Users/you/.ssh/id_rsa
SSH key giờ đây đã được đăng ký và sẵn sàng để sử dụng.
Cách generate SSH key trên Windows
Trên Windows không có một môi trường chuẩn cho unix shell do đó chúng ta phải tải một ứng dụng shell bên ngoài để có thể generate SSH key. Lựa chọn phổ biến nhất đó chính là Git Bash, nếu chưa có thể các bạn thể tham khảo cách bài viết download git bash trên windows.
Sau khi Git Bash được tải xuống hoàn tất, các bạn có thể thực hiện theo những bước tương tự như trên Linux và OsX.
Nguồn tham khảo
https://www.atlassian.com/git/tutorials/git-ssh