Tổng hợp những câu lệnh và các cấu hình thường dùng trong ssh để bạn dễ tra cứu.
Các câu lệnh cơ bản
SSH connections keep alive:
sudo vi /etc/ssh/ssh_config ServerAliveInterval 60
Kết nối đến một server từ xa:
ssh [user]@example.com
Kết nối với kết nối server từ xa trên một port khác port 22:
ssh -p 62775 [user]@example.com
Chạy một file script trên server:
ssh user@server '/path/to/script.sh'
Chạy một file script local trên server:
ssh user@server bash < [script]
Chạy một lệnh trên server:
ssh user@server "sudo /opt/scripts/doSomething.sh magic"
Tunnel & Proxy
Sử dụng port server để ssh vào một server khác:
ssh -J [gateway] [destination]
Sử dụng kết nối ssh như một kết nối sock proxy:
ssh -D [local_port] [user]@[host]
Sử dụng kết nối ssh như một kết nối sock proxy với no shell:
ssh -N -D [local_port] [user]@[host]
Chuyển tiếp local port đến port từ xa trên server từ xa thông qua port:
ssh -L [local_port]:[destination_host]:[detination_port] [gateway_user]@[gateway_host]
Chuyển tiếp local port đến port từ xa trên server từ xa thông qua port với no shell:
ssh -N -L [local_port]:[destination_host]:[detination_port] [gateway_user]@[gateway_host]
Map local port trực tiếp lên một port ở điểm đích:
ssh -L [local_port]:localhost:[destination_port] [destination_user]@[destination_host]
Ví dụ: Map local port 8888 thành port 80 trên example.com thông qua proxy
ssh -L 8888:example.com:80 [user]@[host] firefox localhost:8888
Ví dụ: map port 8888 đến ssh into [target] thông qua [gateway]
ssh -L 8888:[target_host]:22 [gateway_user]@[gateway_host] ssh -p 8888 [target_user]@localhost
Mở một local port đến một remote server thông qua ssh:
ssh -R [remote_port]:[local_address]:[local_port] [gateway_user]@[gateway_host]
SSH keys
Tạo private key và public key local để ssh vào server cho trình xác thực dựa trên key theo cách thủ công là dán public key từ local vào tệp cấu hình của server đích:
Tạo key mới từ local:
ssh-keygen
Sao chép key ssh từ local vào server để xác thực dựa trên key:
ssh-copy-id [user]@[host]
Thêm public key vào file xác thực trên server:
vi ~/.ssh/authorized_keys
Bảo mật scp (scp)
sao chép tệp vào remote:
scp /tmp/file.zip yourdomain.com:/path/to/file.zip
Giữ thời gian chỉnh sửa file cuối cùng
scp -p [from] [to]
Sử dụng đệ quy để copy toàn bộ file trong thư mục từ server về local:
scp -r [user]@example.com:/data/upload /data/
Copy với port ssh tùy chỉnh:
scp -P 62775 [from] [to]
Tải xuống tệp từ tunnel server [target] thông qua server [gateway]
ssh -L [port]:[target]:22 [gateway_user]:[gateway] scp -P [port] [target_user]@[gateway]:[file] .
Mount thống tệp từ xa
Mount một thư mục từ xa vào hệ thống tệp local:
sshfs [user]@[host]:[remote_path] [mountpoint]
unmount thư mục từ xa
umount [mountpoint]
sshuttle – poor mans VPN over SSH
Định tuyến tất cả lưu lượng truy cập qua một kết nối ssh
sshuttle -r [user]@[host] 0/0
Config file
Để việc sử dụng ssh dễ dàng, ngắn gọn và dễ quản lý, chúng ta có thể dùng ssh config file:
~/.ssh/config
Host [alias] HostName example.com User [user] IdentityFile ~/.ssh/[key] Port 22 ForwardX11 no ForwardAgent no ProxyJump 10.10.10.10
Sau đó chỉ cần dùng câu lệnh ngắn gọn sau để ssh vào server:
ssh [alias]
Xem tất cả các config và alias chúng ta sử dụng storm ssh:
storm list
Chạy lệnh ssh trên nhiều server cùng một lúc
parallel-ssh