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