溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux系統中如何設置SSH免密登錄

發布時間:2022-01-24 10:14:07 來源:億速云 閱讀:189 作者:kk 欄目:開發技術
# Linux系統中如何設置SSH免密登錄

## 目錄
1. [SSH免密登錄概述](#1-ssh免密登錄概述)
2. [SSH密鑰對工作原理](#2-ssh密鑰對工作原理)
3. [環境準備](#3-環境準備)
4. [生成SSH密鑰對](#4-生成ssh密鑰對)
5. [配置公鑰到目標服務器](#5-配置公鑰到目標服務器)
6. [權限設置要點](#6-權限設置要點)
7. [測試免密登錄](#7-測試免密登錄)
8. [常見問題排查](#8-常見問題排查)
9. [安全注意事項](#9-安全注意事項)
10. [高級配置技巧](#10-高級配置技巧)
11. [總結](#11-總結)

---

## 1. SSH免密登錄概述

SSH(Secure Shell)是Linux系統中最常用的遠程管理協議,傳統密碼登錄方式存在暴力破解風險且操作繁瑣。免密登錄通過非對稱加密技術實現安全認證,具有以下優勢:

- 安全性:密鑰認證比密碼更難以暴力破解
- 便捷性:無需反復輸入密碼,適合自動化腳本
- 可靠性:避免因密碼過期導致的連接中斷

典型應用場景:
- 服務器集群管理
- 自動化部署(CI/CD)
- 定時任務執行
- 文件同步(如rsync)

## 2. SSH密鑰對工作原理

SSH免密登錄基于非對稱加密體系:

客戶端 服務端 |——– 公鑰傳輸 ———–>| | | 將公鑰存入 | | ~/.ssh/authorized_keys |<—– 加密挑戰消息 ———–| | 用私鑰解密并應答 | |——– 解密結果 ————>| | | 驗證通過后建立連接


密鑰類型說明:
- RSA:兼容性最好(推薦2048位以上)
- ECDSA:安全性更高但舊系統可能不支持
- Ed25519:最先進的算法(OpenSSH 6.5+)

## 3. 環境準備

### 3.1 確認SSH服務狀態
```bash
# 檢查客戶端SSH
$ ssh -V
OpenSSH_8.9p1 Ubuntu-3, OpenSSL 3.0.2 15 Mar 2022

# 檢查服務端SSH服務
$ sudo systemctl status sshd

3.2 網絡連通性測試

$ ping target-server
$ telnet target-server 22  # 檢查端口開放

4. 生成SSH密鑰對

4.1 基本生成命令

$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

參數說明: - -t:指定密鑰類型 - -b:密鑰位數(RSA建議至少2048) - -C:注釋信息(通常用郵箱標識)

4.2 生成過程示例

Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/user/.ssh/id_rsa
Your public key has been saved in /home/user/.ssh/id_rsa.pub

4.3 密鑰文件說明

  • id_rsa:私鑰文件(權限必須為600)
  • id_rsa.pub:公鑰文件(可自由分發)
  • known_hosts:已認證主機記錄
  • authorized_keys:允許登錄的公鑰集合

5. 配置公鑰到目標服務器

5.1 手動復制方法

$ ssh-copy-id -i ~/.ssh/id_rsa.pub user@remote-host

5.2 手動配置步驟

  1. 復制公鑰內容:
$ cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2E... user@host
  1. 登錄目標服務器:
$ mkdir -p ~/.ssh
$ chmod 700 ~/.ssh
$ echo "公鑰內容" >> ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys

5.3 多密鑰管理

當需要為不同服務器使用不同密鑰時:

# ~/.ssh/config 示例
Host server1
    HostName 192.168.1.100
    User admin
    IdentityFile ~/.ssh/server1_key

Host github.com
    User git
    IdentityFile ~/.ssh/github_key

6. 權限設置要點

正確的文件權限至關重要:

# 客戶端權限
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/id_rsa

# 服務端權限
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys

權限錯誤會導致的典型報錯:

Permissions 0644 for '/home/user/.ssh/id_rsa' are too open.

7. 測試免密登錄

7.1 基礎測試

$ ssh user@remote-host

7.2 詳細調試模式

$ ssh -vvv user@remote-host

成功連接后應看到:

Authenticated to remote-host ([IP]:22) using "publickey".

8. 常見問題排查

8.1 問題現象:仍需輸入密碼

  • 檢查項:
    • authorized_keys文件權限
    • SELinux狀態(臨時關閉:setenforce 0
    • 服務端SSH配置:/etc/ssh/sshd_config
    PubkeyAuthentication yes
    AuthorizedKeysFile .ssh/authorized_keys
    

8.2 問題現象:Connection refused

  • 解決方案:
    
    $ sudo systemctl restart sshd
    $ sudo ufw allow 22  # 防火墻設置
    

8.3 問題現象:Host key verification failed

  • 處理方法:
    
    $ ssh-keygen -R hostname  # 清除舊指紋
    

9. 安全注意事項

9.1 私鑰保護措施

  • 設置密鑰密碼(passphrase)
  • 使用ssh-agent管理密鑰:
    
    $ eval $(ssh-agent)
    $ ssh-add ~/.ssh/id_rsa
    

9.2 服務器端安全加固

  1. 禁用root登錄:
    
    PermitRootLogin no
    
  2. 限制登錄用戶:
    
    AllowUsers admin deploy
    
  3. 修改默認端口:
    
    Port 2222
    

9.3 定期維護建議

  • 每6個月輪換一次密鑰
  • 及時清理不再使用的公鑰
  • 監控登錄日志:/var/log/auth.log

10. 高級配置技巧

10.1 跳板機配置

Host jumpbox
    HostName jump.example.com
    User admin
    IdentityFile ~/.ssh/jump_key

Host internal-server
    HostName 10.0.0.1
    User deploy
    ProxyJump jumpbox

10.2 限制命令執行

在authorized_keys中添加限制:

command="/bin/journalctl -u app" ssh-rsa AAAAB3Nza...

10.3 雙因素認證

結合Google Authenticator:

AuthenticationMethods publickey,keyboard-interactive

11. 總結

SSH免密登錄是Linux系統管理的必備技能,正確配置后可以: - 提高工作效率 - 增強系統安全性 - 實現自動化運維

建議實踐路線: 1. 在測試環境練習完整流程 2. 為主力服務器配置免密登錄 3. 學習Ansible等自動化工具時應用此技術

附錄:常用命令速查表

命令 功能
ssh-keygen -l -f keyfile 查看密鑰指紋
ssh-add -L 列出已加載密鑰
ssh -T git@github.com 測試GitHub連接
scp -i keyfile local user@remote:path 安全文件傳輸

”`

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女