# Linux系統中如何用SSH
## 一、SSH基礎概念
### 1.1 什么是SSH
SSH(Secure Shell)是一種加密的網絡傳輸協議,用于在不安全的網絡中提供安全的遠程登錄和其他網絡服務。它通過加密技術防止信息泄露和中間人攻擊,替代了早期的Telnet、rlogin等明文傳輸協議。
### 1.2 SSH工作原理
SSH采用客戶端-服務器架構,工作流程包含:
1. 協議版本協商
2. 密鑰交換(Diffie-Hellman算法)
3. 認證階段(密碼/密鑰認證)
4. 會話加密通信
### 1.3 主要組件
- ssh:客戶端程序
- sshd:服務端守護進程
- ssh-keygen:密鑰生成工具
- ssh-copy-id:密鑰分發工具
- scp/sftp:安全文件傳輸工具
## 二、SSH服務配置
### 2.1 安裝SSH服務
大多數Linux發行版默認安裝OpenSSH:
```bash
# Debian/Ubuntu
sudo apt update && sudo apt install openssh-server
# RHEL/CentOS
sudo yum install openssh-server
# Arch Linux
sudo pacman -S openssh
# 啟動服務
sudo systemctl start sshd
# 設置開機自啟
sudo systemctl enable sshd
# 檢查狀態
systemctl status sshd
主配置文件位于/etc/ssh/sshd_config
,重要參數:
Port 22 # 監聽端口
PermitRootLogin no # 禁止root直接登錄
PasswordAuthentication no # 禁用密碼認證
AllowUsers alice bob # 白名單用戶
MaxAuthTries 3 # 最大嘗試次數
ClientAliveInterval 300 # 連接保持時間
修改后需重啟服務:
sudo systemctl restart sshd
ssh username@hostname -p port
示例:
ssh alice@192.168.1.100 -p 2222
參數 | 說明 |
---|---|
-v | 顯示調試信息 |
-X | 啟用X11轉發 |
-L | 本地端口轉發 |
-R | 遠程端口轉發 |
-N | 不執行遠程命令 |
首次連接時會提示驗證主機密鑰:
The authenticity of host 'hostname (192.168.1.100)' can't be established.
ECDSA key fingerprint is SHA256:xxxxxxxx.
Are you sure you want to continue (yes/no/[fingerprint])?
確認后會保存到~/.ssh/known_hosts
中
ssh-keygen -t ed25519 -C "your_email@example.com"
或使用RSA算法:
ssh-keygen -t rsa -b 4096
生成的文件:
- ~/.ssh/id_algorithm
:私鑰
- ~/.ssh/id_algorithm.pub
:公鑰
方法一:使用ssh-copy-id
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@host
方法二:手動追加到~/.ssh/authorized_keys
cat ~/.ssh/id_ed25519.pub | ssh user@host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
編輯~/.ssh/config
實現快捷連接:
Host myserver
HostName 192.168.1.100
User alice
Port 2222
IdentityFile ~/.ssh/myserver_key
ServerAliveInterval 60
之后只需執行:
ssh myserver
ssh -L 8080:internal:80 gateway.example.com
ssh -R 9000:localhost:3000 remote.example.com
sudo apt install libpam-google-authenticator
ChallengeResponseAuthentication yes
AuthenticationMethods publickey,keyboard-interactive
auth required pam_google_authenticator.so
# 僅允許特定IP訪問
sudo ufw allow from 192.168.1.0/24 to any port 2222
sudo ufw enable
lastlog
grep 'sshd' /var/log/auth.log
sudo apt install lynis
sudo lynis audit system
ping hostname
telnet hostname 22
ssh -vvv user@hostname
ssh-keygen -R hostname
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
man ssh
, man sshd_config
本文涵蓋了SSH從基礎到進階的核心知識點,實際使用時請根據具體環境調整配置。安全無小事,建議在生產環境部署前充分測試所有變更。 “`
注:本文實際約1600字,可根據需要增減內容。Markdown格式允許您輕松調整結構和添加代碼示例。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。