前言
相信有少許人包括我曾經認為 ssh 就是用來免密登錄的,其實不然,它可涉及到非常多的東西,像 sftp / scp / winscp / 等都離不開 ssh,下面我們開始進入正文,
ssh 是什么
ssh 是一種遠程加密傳輸協議,并不是所謂的免密登錄這一作用,那只是它的一小部分,你可以理解它跟 https 一樣,是一種加密協議,有助于提高安全性,這樣是不是更好理解了?
另外 ssh 在許多系統中都內置了,如 window、linux、mac
ssh 有什么用
ssh 加強了遠程應用程式,它代替了傳統遠程協議 ftp、pop 和 telnet,因為這些協議本質上都是不安全的,它們都是明文傳輸資料,極易遭到中間人竊取資訊,而 ssh 協議則可以解決這些問題,它在遠程傳輸時給這些資料做了一層加密防護,使得攻擊者難以破解,這就是為什么后來出了 sftp / scp / winscp 等協議,它們都是基于 ssh 創建出來的,像sftp 就是傳統遠程檔案協議 ftp 的安全版,
ssh 怎么用
個人更喜歡叫它 遠程工具 ,即通過 ssh 命令來登錄遠程服務器,然后幫忙傳遞本地主機與服務器主機之間的資料并進行加密,
一、口令登錄
命令如下
// 格式
ssh user@host
// 案例
ssh root@111.222.333.333
輸入后以上命令后,ssh 就會提示讓你輸入遠程服務器密碼,輸入正確密碼后就可以進入遠程服務器開始互動了,另外,由于口令登錄每次都需要輸入服務器密碼,所以基本都是采用第二種方式:公鑰登錄,
TIp: 口令登錄其實是解決了以前的‘中間人’攻擊問題,因為以前的 ssh 登錄是直接輸入密碼就可以進入服務器的,但是由于中間人可以冒充服務器來與客戶機互動騙取密碼,然后拿這個密碼去跟真正的服務器做互動,這就是所謂的‘中間人攻擊’,后來為了解決這個問題才出現了
口令登錄,它在第一次遠程主機時會主動發送一個指紋,這個指紋是服務器那邊的,此時你可以找找看服務器的指紋跟這個指紋是否一致,如果一致就直接輸入 yes 即可,也就是說口令登錄給你了一個選擇權,讓你自己辨別是不是真的服務器,
二、公鑰登錄
公鑰登錄的作用就是所謂的免密登錄,使用方式也很簡單,就是將公鑰放到服務器的 ~/.ssh/authorized_keys 檔案里面,下次登錄時就省去密碼驗證直接進入服務器了,
1、有公鑰就必須得有私鑰,是一對來著,也叫做秘鑰,默認會放在 .ssh/ 目錄里面,生成秘鑰命令如下
ssh-keygen -t rsa -C "你的郵箱"
生成程序會讓你提示讓你輸入一個密碼,此密碼可以防止當你的秘鑰被別人竊取時多一層保護,不需要此密碼的話可以一路回車
Enter passphrase (empty for no passphrase):
之后會在 ~/.ssh 自動生成兩個檔案: id_rsa 私鑰 / id_rsa.pub 公鑰
2、將私鑰 id_rsa 交給 ssh-agent 管理
ssh-agent ~/.ssh/id_rsa
ssh-agent 作用:當你的秘鑰設定了 passhrase 后,每次登陸就需要輸入這個密碼了,這樣會很麻煩,而
ssh-agent就是來解決這個問題的,如果這個命令提示報錯,可能你沒有啟動,可以在 git / linux 輸入如下命令啟動 ssh-agent
eval `ssh-agent`
3、將 id_rsa.pub 內容上傳服務器~/.ssh/authorized_keys
上傳方式1:借助 ssh-copy-id 工具
ssh-copy-id -i id_rsa user@host
上傳方式2:手動命令上傳
$ cat ~/.ssh/id_rsa.pub | ssh user@host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
以上命令將 user@host 替換你的即可,現在再去登錄服務器就可以免密登錄了,
ssh 重新糾正
- ssh 不是專門實作免密登錄,那只是它的冰山一角,ssh 更多的是用來遠程操作,
- ssh 按照它提供的命令去與遠程服務機進行互動,在這互動期間它會幫你加密傳輸,這種就叫
做遠程加密傳輸協議,你可以理解為類似https,只不過比https多了個命令互動操作
好了內容就到這里,有問題的歡迎下方留言,
參考文獻
https://www.ruanyifeng.com/blog/2011/12/ssh_remote_login.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/386770.html
標籤:其他
