Thứ ba, 10/09/2013 | 00:00 GMT+7

Sử dụng SSH để kết nối tới Remote Server trong Ubuntu

SSH là một công cụ căn bản nhất để quản trị hệ thống server họ Linux/Unix. SSH, viết tắt của Secure Shell , là một giao thức được sử dụng để đăng nhập an toàn vào các hệ thống từ xa, là cách phổ biến nhất để truy cập các server Unix/Linux từ xa. Trong hướng dẫn này, ta sẽ thảo luận về cách sử dụng SSH để kết nối với hệ thống từ xa.

Cú pháp cơ bản

Dạng cơ bản nhất của lệnh là (chạy lệnh này trên linux/unix):

  • ssh remote_host

Remote_host trong ví dụ này là địa chỉ IP hoặc domain mà bạn đang cố gắng kết nối.

Lệnh này giả định tên user trên hệ thống từ xa giống với tên user trên hệ thống local của bạn.

Nếu tên user khác trên hệ thống từ xa, bạn có thể chỉ định tên user đó bằng cách sử dụng cú pháp sau:

  • ssh remote_username@remote_host

Khi bạn đã kết nối với server, bạn có thể cần xác minh danh tính bằng cách cung cấp password.

Phần sau, ta sẽ trình bày cách tạo khóa tiện lợi và bảo mật hơn để đăng nhập thay vì password.

Để thoát trở lại phiên local của bạn, chỉ cần nhập:

  • exit

SSH hoạt động như thế nào?

SSH hoạt động bằng cách kết nối client với server ssh .

Trong các lệnh trên, ssh là client. Máy chủ ssh đã chạy trên remote_host mà ta đã chỉ định.

Quá trình cần để khởi động server ssh phụ thuộc vào bản phân phối của Linux mà bạn đang sử dụng.

Trên Ubuntu, bạn có thể khởi động server ssh bằng lệnh:

  • sudo service ssh start

Trên Ubuntu 16.04 và Debian Jessie, bạn có thể sử dụng systemctl , lệnh systemd để quản lý các dịch vụ:

  • sudo systemctl start ssh

Lệnh trên sẽ khởi động server sshd và sau đó bạn có thể đăng nhập từ xa.

Cách cấu hình SSH

Khi bạn thay đổi cấu hình của SSH, bạn đang thay đổi cài đặt của server sshd.

Trong Ubuntu, file cấu hình sshd chính được đặt tại /etc/ssh/sshd_config .

Sao lưu version hiện tại của file này trước khi chỉnh sửa:

  • sudo cp /etc/ssh/sshd_config{,.bak}

Mở nó bằng một editor:

  • sudo nano /etc/ssh/sshd_config

Có một số option có thể xem qua:

/etc/ssh/sshd_config
Port 22

Khai báo cổng server sshd sẽ lắng nghe kết nối. Theo mặc định, đây là 22. Bạn có thể nên để nguyên cài đặt này, trừ khi bạn có lý do cụ thể để làm khác. Nếu bạn thay đổi cổng của bạn, ở client cần đổi cổng kết nối (xem phần sau).

/ etc / ssh / sshd_config
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key

Khai báo khóa server chỉ định nơi tìm khóa server global. Ta sẽ thảo luận về khóa server là gì sau.

/ etc / ssh / sshd_config
SyslogFacility AUTH
LogLevel INFO

Hai mục này cho biết việc ghi log ra sao.

Nếu bạn đang gặp vấn đề với SSH, tăng lượng ghi log có thể là một cách tốt để xem lỗi gì.

/ etc / ssh / sshd_config
LoginGraceTime 120
PermitRootLogin yes
StrictModes yes

Các thông số này chỉ định một số thông tin đăng nhập.

LoginGraceTime chỉ định bao nhiêu giây để duy trì kết nối mà không cần đăng nhập thành công.

Có thể là tốt hơn nếu bạn đặt thời gian này cao hơn một chút so với khoảng thời gian đăng nhập bình thường.

PermitRootLogin chọn xem root có được phép đăng nhập trực tiếp hay không.

Trong hầu hết các trường hợp, điều này sẽ được thay đổi thành “no” , khi đó có thể cần tạo account user thường (khác root) có quyền truy cập vào các quyền nâng cao (thông qua su hoặc sudo) và có thể đăng nhập thông qua ssh.

strictModes là chế độ giới hạn, sẽ từ chối đăng nhập khi ai cũng đều có thể đọc được file xác thực.

Điều này chặn đăng nhập khi file cấu hình không an toàn.

/ etc / ssh / sshd_config
X11Forwarding yes
X11DisplayOffset 10

Các tham số này cấu hình một lựa chọn được gọi là Chuyển tiếp X11 . Điều này cho phép bạn xem giao diện user đồ họa (GUI) của hệ thống từ xa trên hệ thống local.

Tùy chọn này phải được cho phép (enable) trên server và được cung cấp cùng với client SSH trong quá trình kết nối với tùy chọn -X .

Sau khi thực hiện các thay đổi, hãy lưu file bằng lệnh CTRL-XY , sau đó nhấn ENTER.


Nếu bạn đã thay đổi cài đặt nào trong /etc/ssh/sshd_config , hãy  khởi động lại server sshd để áp dụng thay đổi:

  • sudo service ssh restart

Hoặc, trên các hệ thống systemd như Ubuntu 16.04 hoặc Debian Jessie:

  • sudo systemctl restart ssh

Bạn nên kiểm tra kỹ các thay đổi đảm bảo chúng hoạt động theo cách bạn muốn.

Cách đăng nhập SSH bằng Keys

Mặc có thể đăng nhập vào hệ thống từ xa bằng password, nhưng bạn nên thiết lập xác thực dựa trên khóa .

Xác thực dựa trên khóa hoạt động như thế nào?

Xác thực dựa trên khóa hoạt động bằng cách tạo một cặp khóa: private key và public key .

private key nằm trên client và được bảo mật.

Khóa công khai có thể được cấp cho mọi người hoặc được đặt trên server nào bạn muốn truy cập.

Khi bạn kết nối bằng cặp khóa, server sẽ sử dụng public key để tạo thông báo cho client, thông báo chỉ giải mã được bằng private key của client.

Client sau đó sẽ gửi phản hồi thích hợp trở lại server và server sẽ biết rằng client là hợp lệ.

Toàn bộ quá trình này được thực hiện tự động khi bạn thiết lập khóa.

Cách tạo khóa SSH

Khóa SSH nên được tạo ra trên máy tính mà bạn muốn dùng làm client. Đây thường là máy tính local của bạn.

Nhập thông tin sau vào dòng lệnh (nếu dùng window, có thể tải OpenSSL để cài đặt, sẽ có các công cụ tương ứng này) :

  • ssh-keygen -t rsa

Nhấn enter để chấp nhận các giá trị mặc định. Khóa của bạn sẽ được tạo tại ~ / .ssh / id_rsa.pub~ / .ssh / id_rsa .

Thay đổi vào .ssh bằng lệnh:

  • cd ~/.ssh

Xem các quyền của các file:

  • ls -l
Output
-rw-r--r-- 1 demo demo  807 Sep  9 22:15 authorized_keys
-rw------- 1 demo demo 1679 Sep  9 23:13 id_rsa
-rw-r--r-- 1 demo demo  396 Sep  9 23:13 id_rsa.pub

Như bạn thấy, file id_rsa chỉ có thể đọc và ghi được đối với chủ sở hữu. Đây là cách nó nên được giữ bí mật.

Tuy nhiên, file id_rsa.pub có thể được chia sẻ và có các quyền thích hợp cho hoạt động này.

Cách chuyển public key của bạn đến server

Bạn có thể sao chép public key vào server từ xa bằng cách ra lệnh sau:

  • ssh-copy-id remote_host

Thao tác này sẽ bắt đầu một phiên SSH, cần xác thực bằng password của bạn.

Sau khi bạn nhập password, nó sẽ sao chép public key của bạn vào file khóa được ủy quyền của server, cho phép bạn đăng nhập mà không cần password vào lần sau.

Tùy chọn phía client

Có một số cờ tùy chọn mà bạn có thể chọn khi kết nối qua SSH.

Một số trong số này có thể cần thiết với cài đặt trong cấu hình sshd của server từ xa.

Ví dụ: nếu bạn đã thay đổi số cổng trong cấu hình sshd của bạn, bạn cần phải khớp cổng đó ở phía client bằng lệnh:

  • ssh -p port_number remote_host

Nếu bạn chỉ muốn thực hiện một lệnh duy nhất trên hệ thống từ xa, bạn có thể chỉ định sau server như sau:

  • ssh remote_host command_to_run

Bạn sẽ kết nối với máy từ xa, xác thực và lệnh sẽ được thực thi.

Như ta đã nói trước đây, nếu chuyển tiếp X11 được bật trên cả hai máy tính, bạn có thể truy cập chức năng đó bằng lệnh:

  • ssh -X remote_host

Cung cấp cho bạn các công cụ thích hợp, các chương trình GUI trên hệ thống từ xa giờ có thể mở cửa sổ trên hệ thống local của bạn.

Tắt xác thực password

Nếu đã tạo khóa SSH, bạn có thể tăng cường bảo mật cho server bằng cách tắt xác thực chỉ bằng password. Ngoài console, cách duy nhất để đăng nhập vào server sẽ là thông qua private key ghép nối với public key mà bạn đã cài đặt trên server.

Lưu ý: Trước khi bạn tiếp tục bước này, hãy đảm bảo bạn đã cài đặt public key cho server. Nếu không, bạn sẽ bị khóa!

Như là user root hoặc user không phải root với quyền sudo, mở file cấu hình sshd:

  • sudo nano /etc/ssh/sshd_config

Tìm dòng ghi Password Authentication và bỏ ghi chú bằng cách xóa dấu # ở đầu. Sau đó, bạn có thể thay đổi giá trị của nó thành “no”:

sshd_config - Tắt xác thực password
PasswordAuthentication no

Hai cài đặt khác không cần phải sửa đổi (miễn là bạn chưa sửa đổi file này trước đó) là PubkeyAuthenticationChallengeResponseAuthentication . Chúng được đặt theo mặc định và sẽ đọc như sau:

sshd_config - Các giá trị mặc định quan trọng
PubkeyAuthentication yes
ChallengeResponseAuthentication no

Sau khi thực hiện các thay đổi, hãy lưu file.

Đến đây bạn có thể tải lại daemon SSH:

  • sudo systemctl restart ssh

Xác thực password bây giờ sẽ bị vô hiệu hóa và server chỉ có thể truy cập được thông qua xác thực khóa SSH.

Kết luận

Như vậy bạn đã làm quên SSH, công cụ kinh điển để quản trị hệ thống. Khi sử dụng các tùy chọn khác nhau, bạn sẽ khám phá ra nhiều chức năng tiên tiến hơn có thể giúp công việc dễ dàng hơn. SSH vẫn được ưa chuộng vì nó an toàn, nhẹ và hữu ích.


Tags:

Các tin trước

Backup postgresql databases trên Ubuntu vps 2013-08-28
Sử dụng Cron để tự động hóa các công việc việc trên server 2013-08-23
Bảo mật postgresql trên Ubuntu vps 2013-08-22
Sử dụng sftp-to-securely-transfer-files với remote-server 2013-08-13
Quản trị packages trong Ubuntu và Debian với apt-get-apt-cache 2013-08-06
Sử dụng roles và quản lý cấp quyền trong postgresql trên vps 2013-08-05
Lệnh truy vấn SQL trong postgresql sử dụng select 2013-08-02
Các lệnh truy cấn quản lý bảng dữ liệu trong postgresql trên cloud-server 2013-08-01
Bảo mật MySQL và MariaDB Databases trên Linux VPS 2013-07-23
Cài đặt Firewall với UFW trên Ubuntu và Debian Cloud Server 2013-06-25