ssh 是什么?怎么用?有哪些誤區(qū)?
前言
相信有少許人包括我曾經(jīng)認為 ssh
就是用來免密登錄的,其實不然,它可涉及到非常多的東西,像 sftp / scp / winscp / 等都離不開 ssh,下面我們開始進入正文。
ssh 是什么
ssh 是一種遠程加密傳輸協(xié)議
,并不是所謂的免密登錄這一作用,那只是它的一小部分,你可以理解它跟 https
一樣,是一種加密協(xié)議,有助于提高安全性,這樣是不是更好理解了?
另外 ssh 在許多系統(tǒng)中都內(nèi)置了,如 window、linux、mac
ssh 有什么用
ssh 加強了遠程應(yīng)用程序,它代替了傳統(tǒng)遠程協(xié)議 ftp、pop 和 telnet,因為這些協(xié)議本質(zhì)上都是不安全的,它們都是明文傳輸數(shù)據(jù),極易遭到中間人竊取信息,而 ssh 協(xié)議則可以解決這些問題,它在遠程傳輸時給這些數(shù)據(jù)做了一層加密防護,使得攻擊者難以破解,這就是為什么后來出了 sftp / scp / winscp
等協(xié)議,它們都是基于 ssh
創(chuàng)建出來的,像sftp
就是傳統(tǒng)遠程文件協(xié)議 ftp
的安全版。
ssh 怎么用
個人更喜歡叫它 遠程工具
,即通過 ssh 命令來登錄遠程服務(wù)器,然后幫忙傳遞本地主機與服務(wù)器主機之間的數(shù)據(jù)并進行加密。
一、口令登錄
命令如下
// 格式 ssh user@host // 案例 ssh root@111.222.333.333
輸入后以上命令后,ssh 就會提示讓你輸入遠程服務(wù)器密碼,輸入正確密碼后就可以進入遠程服務(wù)器開始交互了,另外,由于口令登錄每次都需要輸入服務(wù)器密碼,所以基本都是采用第二種方式:公鑰登錄。
TIp: 口令登錄其實是解決了以前的‘中間人'攻擊問題,因為以前的 ssh 登錄是直接輸入密碼就可以進入服務(wù)器的,但是由于中間人可以冒充服務(wù)器來與客戶機交互騙取密碼,然后拿這個密碼去跟真正的服務(wù)器做交互,這就是所謂的‘中間人攻擊',后來為了解決這個問題才出現(xiàn)了
口令登錄
,它在第一次遠程主機時會主動發(fā)送一個指紋
,這個指紋
是服務(wù)器那邊的,此時你可以找找看服務(wù)器的指紋
跟這個指紋
是否一致,如果一致就直接輸入 yes 即可,也就是說口令登錄給你了一個選擇權(quán),讓你自己辨別是不是真的服務(wù)器。
二、公鑰登錄
公鑰登錄的作用就是所謂的免密登錄
,使用方式也很簡單,就是將公鑰放到服務(wù)器的 ~/.ssh/authorized_keys
文件里面,下次登錄時就省去密碼驗證直接進入服務(wù)器了。
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 作用:當你的秘鑰設(shè)置了 passhrase 后,每次登陸就需要輸入這個密碼了,這樣會很麻煩,而
ssh-agent
就是來解決這個問題的,如果這個命令提示報錯,可能你沒有啟動,可以在 git / linux 輸入如下命令啟動 ssh-agent
eval `ssh-agent`
3、將 id_rsa.pub
內(nèi)容上傳服務(wù)器~/.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
替換你的即可,現(xiàn)在再去登錄服務(wù)器就可以免密登錄了。
ssh 重新糾正
ssh 不是專門實現(xiàn)免密登錄,那只是它的冰山一角,ssh 更多的是用來遠程操作。ssh 按照它提供的命令去與遠程服務(wù)機進行交互,在這交互期間它會幫你加密傳輸,這種就叫做遠程加密傳輸協(xié)議
,你可以理解為類似 https
,只不過比 https
多了個命令交互操作
好了內(nèi)容就到這里,有問題的歡迎下方留言。
總結(jié)
到此這篇關(guān)于ssh 是什么?怎么用?有哪些誤區(qū)?的文章就介紹到這了,更多相關(guān)ssh誤區(qū)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
通過 SSH 在遠程 Linux 系統(tǒng)上運行命令的方法
這篇文章主要介紹了通過 SSH 在遠程 Linux 系統(tǒng)上運行命令的方法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-10-10apache提示Failed loading ZendLoader.dll解決方法
這篇文章主要介紹了apache提示Failed loading ZendLoader.dll解決方法,需要的朋友可以參考下2015-04-04Apache服務(wù)器中使用.htaccess實現(xiàn)偽靜態(tài)URL的方法
這篇文章主要介紹了Apache服務(wù)器中使用.htaccess實現(xiàn)偽靜態(tài)URL的方法,示例結(jié)合PHP腳本,需要的朋友可以參考下2015-07-07