講解一下ssh遠(yuǎn)程登陸的基礎(chǔ)知識(shí)。
0. 基本概念
SSH (Secure Shell)是一種安全的遠(yuǎn)程登錄協(xié)議,旨在提供比傳統(tǒng)的未加密的遠(yuǎn)程登錄協(xié)議更好的安全性。SSH協(xié)議采用了客戶端-服務(wù)器架構(gòu),通過建立安全信道實(shí)現(xiàn)客戶端和服務(wù)器之間的通信。SSH協(xié)議有三個(gè)層次:傳輸層、用戶身份驗(yàn)證層和連接層。其中傳輸層負(fù)責(zé)保障通信的安全性,用戶身份驗(yàn)證層負(fù)責(zé)驗(yàn)證用戶身份,連接層提供類似于終端會(huì)話的機(jī)制,支持命令行操作。
SSH協(xié)議的優(yōu)點(diǎn)是可以提供加密的安全通信,減小被中間人攻擊或密碼被竊聽的風(fēng)險(xiǎn),同時(shí)還能夠提供數(shù)據(jù)完整性和認(rèn)證機(jī)制。SSH協(xié)議也有許多應(yīng)用,例如遠(yuǎn)程登錄、文件傳輸、安全拷貝、端口轉(zhuǎn)發(fā)等。
對(duì)于我們使用者而言,不需要知道其中原理。只要知道SSH通信組成有兩部分,分別為ssh客戶端程序
和ssh服務(wù)端程序
。連接之前,遠(yuǎn)程目標(biāo)機(jī)器的ssh服務(wù)端程序要保持打開,然后本地主機(jī)使用ssh客戶端程序發(fā)起連接請(qǐng)求,輸入密碼即可登陸成功。
1. 安裝ssh程序
下面分別介紹一下linux和windows平臺(tái)安裝ssh的方法。
1.1 windows平臺(tái)(Win10)
1.安裝ssh的客戶端和服務(wù)端
正常情況系統(tǒng)默認(rèn)安裝了ssh客戶端,依具體情況而定。
2. ssh服務(wù)的啟動(dòng)和關(guān)閉
調(diào)用cmd或powershell終端,然后按情況執(zhí)行下面命令
開啟服務(wù):net start sshd
關(guān)閉服務(wù):net stop sshd
1.2 Linux平臺(tái)(Ubuntu18.04)
1.安裝ssh的客戶端和服務(wù)端
正常情況系統(tǒng)默認(rèn)安裝了ssh客戶端,依具體情況而定。
sudo apt install openssh-server
sudo apt install openssh-client
2.開啟服務(wù)和關(guān)閉服務(wù)
#啟動(dòng)服務(wù)
sudo systemctl start ssh
#關(guān)閉服務(wù)
sudo systemctl stop ssh
#重啟服務(wù)
sudo systemctl restart ssh
3.查看服務(wù)狀態(tài)
sudo systemctl status sshd
開啟狀態(tài):
關(guān)閉狀態(tài):
2. 密碼方式遠(yuǎn)程登錄
無(wú)論是linux還是windows系統(tǒng),使用ssh客戶端遠(yuǎn)程登錄的命令格式都是ssh 用戶名@ip地址
。已知遠(yuǎn)程機(jī)器里注冊(cè)好了賬戶sun,并設(shè)置好了密碼。登錄實(shí)例如下:
fan@pc:~$ ssh sun@192.168.1.10
sun@192.168.1.10's password:
Welcome to Ubuntu 18.04.5 LTS (GNU/Linux 5.4.0-146-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
...
Last login: Mon Apr 24 18:50:03 2023 from 172.32.1.76
sun@pc:~$
登錄成功后,就可以通過該賬戶(sun)進(jìn)行命令行操作這臺(tái)遠(yuǎn)程機(jī)器了。
3. 密鑰方式遠(yuǎn)程登錄
其實(shí)ssh默認(rèn)是使用密鑰登錄的,密鑰登錄的一個(gè)優(yōu)點(diǎn)就是登錄的時(shí)候不需要輸入密碼,其原理大概就是登錄的時(shí)候驗(yàn)證密鑰和公鑰是否匹配,每個(gè)密鑰和公鑰之間都是唯一匹配的。下面具體說(shuō)一下準(zhǔn)備工作:
3.1 生成私鑰公鑰對(duì)
在本地機(jī)器上執(zhí)行命令ssh-keygen -t rsa -C “郵箱”
,例如:
上面執(zhí)行完之后,會(huì)在/home/fan/.ssh/路徑下生成id_rsa和id_rsa.pub文件。其中id_rsa為記錄私鑰的文件,id_rsa.pub為記錄公鑰的文件。
3.2 將公鑰復(fù)制到遠(yuǎn)程機(jī)器
將上一步生成的id_rsa.pub文件內(nèi)容拷貝追加到遠(yuǎn)程機(jī)器的/home/用戶名/.ssh/authorized_keys
中即可。
3.3 嘗試ssh遠(yuǎn)程登錄
上面兩步做完,執(zhí)行ssh登錄命令,正常情況應(yīng)該是不需要密碼就能連接上了。例:
fan@pc:~$ ssh sun@192.168.1.10
從原理角度講,每個(gè)私鑰和公鑰都是可以放到多個(gè)機(jī)器上的,每個(gè)私鑰(公鑰)都有唯一匹配的公鑰(私鑰)。不過從安全性來(lái)講肯定不建議這么做。
4. 常見問題
4.1 sun@192.168.1.21: Permission denied (publickey).
這個(gè)問題是出現(xiàn)在使用git拉取代碼的時(shí)候,之前一直都是好用的。后來(lái)是由于ubuntu升級(jí)到22.04,導(dǎo)致ssh也升級(jí)到OpenSSH_8.9p1。據(jù)官方說(shuō)這個(gè)版本的ssh默認(rèn)不使用rsa的算法認(rèn)證,而本地機(jī)器與服務(wù)器直接一直用的是rsa加密的key,所以才報(bào)了這個(gè)問題。
解決方法: 在/etc/ssh/ssh_config中加入下面這句話開啟rsa算法認(rèn)證
PubkeyAcceptedAlgorithms +ssh-rsa
4.2 Received disconnect from 192.168.1.21 port 22:2: Too many authentication failures
用ssh連接遠(yuǎn)程機(jī)器時(shí),報(bào)了上面的錯(cuò)誤。這個(gè)是由于我本地創(chuàng)建了很多對(duì)密鑰,連接的時(shí)候驗(yàn)證私鑰和公鑰次數(shù)超過最大驗(yàn)證次數(shù),導(dǎo)致了這個(gè)問題。
解決方法1(推薦):
將遠(yuǎn)程機(jī)器最大的驗(yàn)證次數(shù)調(diào)高,編輯遠(yuǎn)程機(jī)器中的/etc/ssh/sshd_config文件,追加如下內(nèi)容:
# 這個(gè)次數(shù)可以依照具體情況進(jìn)行調(diào)整
MaxAuthTries 10
然后重啟一下遠(yuǎn)程機(jī)器的sshd服務(wù),重啟命令可以看上面 1. 安裝ssh程序 。
解決方法2:
連接的時(shí)候使用選項(xiàng)Pubkeyauthentication
,這樣就此次登錄就不會(huì)用密鑰驗(yàn)證登錄的方式而變?yōu)槊艽a登錄方式。
ssh pan@192.168.1.10 -o Pubkeyauthentication=no
解決方法3:
如果想永久的設(shè)置不使用密鑰驗(yàn)證登錄??梢灾苯泳庉?etc/ssh/ssh_config文件,添加PubkeyAuthentication no
即可。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-758381.html
注意上面的sshd_config和ssh_config不要弄混淆。sshd_config是服務(wù)端程序配置文件,ssh_config是客戶端程序配置文件。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-758381.html
到了這里,關(guān)于Linux系列講解 —— SSH登錄的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!