步驟1. 在Jenkins服務器上生成SSH密鑰
在Jenkins服務器上執行以下命令:
# 1. 生成SSH密鑰對
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N ""# 2. 設置正確的權限
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub# 3. 查看公鑰內容
cat ~/.ssh/id_rsa.pub
步驟2. 復制公鑰到目標服務器
方法1:使用ssh-copy-id(推薦)
# 在Jenkins服務器上執行
ssh-copy-id username@target-server-ip
方法2:手動復制
1. 在Jenkins服務器上復制公鑰內容:```bashcat ~/.ssh/id_rsa.pub```2. 在目標服務器上創建或編輯authorized_keys文件:```bashmkdir -p ~/.sshchmod 700 ~/.sshecho "ssh-rsa AAAA..." >> ~/.ssh/authorized_keyschmod 600 ~/.ssh/authorized_keys有些目標服務器配置在 /root/.ssh/ 路徑下
步驟3. 驗證SSH連接
在Jenkins服務器上測試SSH連接:
ssh username@target-server-ip
步驟4:配置Jenkins SSH憑據
1. 登錄Jenkins Web界面
2. 進入 "Manage Jenkins" > "Manage Credentials"
3. 點擊 "System" > "Global credentials" > "Add Credentials"
4. 選擇 "SSH Username with private key"
5. 配置以下信息:
? ?- ID: `jenkins-ssh-key`
? ?- Description: `Jenkins SSH Key for deployment`
? ?- Username: `目標服務器用戶名`
? ?- Private Key: 選擇 "Enter directly" 并粘貼私鑰內容
? ?- Passphrase: 留空(如果密鑰沒有密碼)
步驟5:在Jenkins Pipeline中使用SSH
在Jenkinsfile中添加SSH步驟:
```groovy
stage('Deploy') {steps {script {// 使用SSH執行遠程命令sshagent(['jenkins-ssh-key']) {sh '''ssh username@target-server-ip 'echo "連接到目標服務器成功"# 執行部署命令/opt/scripts/deploy-zj.sh''''}}}
}
```
常見問題排查
1. 權限問題
# 檢查SSH目錄權限
ls -la ~/.ssh/# 修復權限
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub
chmod 600 ~/.ssh/authorized_keys
2. SSH服務配置
確保目標服務器的 `/etc/ssh/sshd_config` 包含:
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
3. 測試SSH連接
# 詳細模式測試SSH連接
ssh -v username@target-server-ip# 使用指定密鑰測試
ssh -i ~/.ssh/id_rsa username@target-server-ip
安全建議
1. 使用強密碼或密鑰密碼
2. 定期輪換SSH密鑰
3. 限制SSH用戶權限
4. 使用防火墻限制SSH訪問
5. 監控SSH登錄日志