【运维】Linux 系统 之 SSH
前言
Secure Shell(安全外殼協議,簡稱SSH)是一種加密的網絡傳輸協議,可在不安全的網絡中為網絡服務提供安全的傳輸環境。SSH通過在網絡中創建安全隧道來實現SSH客戶端與服務器之間的連接。雖然任何網絡服務都可以通過SSH實現安全傳輸,SSH最常見的用途是遠程登錄系統,人們通常利用SSH來傳輸命令行界面和遠程執行命令。 --- wiki百科公鑰私鑰對
使用 ssh-keygen 創建 id_rsa 和 id_rsa.pub
ssh-keygen -t rsa -C "your_email@example.com" [hostname ~]$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/admin/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/admin/.ssh/id_rsa. Your public key has been saved in /home/admin/.ssh/id_rsa.pub. The key fingerprint is:步驟解說
輸入步驟1:
Enter file in which to save the key (/home/admin/.ssh/id_rsa)
設置保存公鑰的地址
輸入步驟2:
Enter passphrase (empty for no passphrase):
設置公鑰密碼, 默認為空, 如果設置了則需要修改連接方式 ssh -K xxx
輸入步驟3:
Enter same passphrase again:
重復設置公鑰密碼
結束后會生成 id_rsa (私鑰)和 id_rsa.pub (公鑰) 兩個文件
正文
使用場景
- 遠程服務器1連接遠程服務器2 - 本地拉取遠程GIT代碼 - 腳本部署代碼遠程服務器連接
假設我現在有兩臺服務器
- 服務器A 10.0.0.1
- 服務器B 10.0.0.2
若想要服務器A能夠不用密碼登錄服務器B,則需要把服務器A的 id_rsa.pub 加入服務器B某個用戶的authorized_keys, 然后執行 ssh b@10.0.0.2
第一次用服務器a連接服務器b 是都會有一段 finger 驗證
The authenticity of host '10.0.0.2 (10.0.0.2)' can't be established. RSA key fingerprint is 70:e5:23:cf:dc:03:2d:09:40:4a:2a:c6:c5:17:e2:32. Are you sure you want to continue connecting (yes/no)?意圖是要將服務器b的公鑰存放在服務器a的 ~/.ssh/know_hosts 文件里面
# 忽略輸入yes/no ssh -o StrictHostKeyChecking=no b@10.0.0.2本地拉取遠程GIT代碼
假設有以下幾臺機器
- 本地機器 local
- 遠程機器 git
以github為例, 我們將本地及其 地址為: https://github.com/settings/s...
圖片如下:
我們在客戶端機器上生成的 id_rsa.pub 填寫至這個表單中, 這就表示github的倉庫允許我們用戶去拉取代碼。
腳本部署代碼
假設我們使用ssh-keygen生成一組deploy的(deploy_id_rsa.pub)公鑰,(deploy_id_rsa)私鑰。 具體執行方式
# deploy.sh# 手動開啟ssh eval $(ssh-agent -s) # 添加deploy私鑰 ssh-add ./deploy_id_rsa # 查看ssh-agent中的密鑰 ssh-add -l # 從ssh-agent 刪除 deploy密鑰, 需要依靠 deploy公鑰 ssh-add -d ./deploy_id_rsa.pubexport deploy_server=b@10.0.0.2 export deploy_path=/home/www/webrootssh -o StrictHostKeyChecking=no -P22 ${deploy_server} "mkdir -p ${deploy_path}/public" ssh -o StrictHostKeyChecking=no -P22 ${deploy_server} "mkdir -p ${deploy_path}/_tmp" scp -P22 -r build/* ${deploy_server}:${deploy_path}/_tmp ssh -p22 ${deploy_server} "mv ${deploy_path}/public ${deploy_path}/_old && ${deploy_path}/_tmp ${deploy_path}/public" ssh -p22 server_user@server_host "rm -rf ${deploy_path}/_old"上述腳本的作用就是將build的所有內容傳輸到 服務器b 的/home/www/webrrot/public里面
小結
作者目前使用的道德ssh相關情況為以上幾種情況, 但ssh的作用遠不止上述列的幾項。等到升入了解后再補充該文。 歡迎大家留言提問,及點贊收藏 !!
總結
以上是生活随笔為你收集整理的【运维】Linux 系统 之 SSH的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java 10更新汇总,新的编译器通吃主
- 下一篇: C++函数的一些特性