SSH遠(yuǎn)程登錄與控制
一 什么是ssh服務(wù)器
SSH(Secure Shell)是一種安全通道協(xié)議,主要用來(lái)實(shí)現(xiàn)字符界面的遠(yuǎn)程登錄、遠(yuǎn)程 復(fù)制等功能。SSH 協(xié)議對(duì)通信雙方的數(shù)據(jù)傳輸進(jìn)行了加密處理,其中包括用戶(hù)登錄時(shí)輸入的用戶(hù)口令,SSH 為建立在應(yīng)用層和傳輸層基礎(chǔ)上的安全協(xié)議。對(duì)數(shù)據(jù)進(jìn)行壓縮,加快傳輸速度。
SSH客戶(hù)端<--------------網(wǎng)絡(luò)---------------->SSH服務(wù)端
1 協(xié)議類(lèi)型
? SSH(Secure Shell):SSH是一種加密網(wǎng)絡(luò)協(xié)議,用于通過(guò)安全通道在不安全網(wǎng)絡(luò)上進(jìn)行遠(yuǎn)程訪(fǎng)問(wèn)和管理。它提供了加密的通信會(huì)話(huà),包括遠(yuǎn)程登錄和執(zhí)行命令,以及傳輸文件等功能
? Telnet:雖然不安全,但仍然被用于遠(yuǎn)程登錄到服務(wù)器或設(shè)備,通常用于簡(jiǎn)單的文本交互
? RDP(Remote Desktop Protocol):主要用于Windows系統(tǒng),允許用戶(hù)通過(guò)圖形界面遠(yuǎn)程訪(fǎng)問(wèn)另一臺(tái)計(jì)算機(jī)。
? VNC(Virtual Network Computing):允許用戶(hù)遠(yuǎn)程控制另一臺(tái)計(jì)算機(jī)的圖形界面。它是跨平臺(tái)的遠(yuǎn)程桌面協(xié)議。
? X11:用于在UNIX和Linux系統(tǒng)上進(jìn)行圖形界面的遠(yuǎn)程訪(fǎng)問(wèn)。
? ICA(Independent Computing Architecture):由Citrix Systems開(kāi)發(fā),用于提供應(yīng)用程序和桌面虛擬化服務(wù)
2 ssh協(xié)議優(yōu)點(diǎn)
數(shù)據(jù)傳輸是加密的,可以防止信息泄露
數(shù)據(jù)傳輸是壓縮的,可以提高傳輸速度
?加密通信:SSH協(xié)議通過(guò)加密技術(shù),確保通信過(guò)程中的數(shù)據(jù)傳輸是安全的,防止數(shù)據(jù)被竊聽(tīng)或篡改
? **遠(yuǎn)程登錄:**用戶(hù)可以使用SSH協(xié)議遠(yuǎn)程登錄到其他計(jì)算機(jī)或服務(wù)器,以便進(jìn)行命令行操作、文件管理等任務(wù)
?加密身份驗(yàn)證:SSH協(xié)議支持使用公鑰和私鑰對(duì)進(jìn)行身份驗(yàn)證,這種方式比傳統(tǒng)的基于密碼的身份驗(yàn)證更加安全
?端口轉(zhuǎn)發(fā):SSH協(xié)議支持端口轉(zhuǎn)發(fā),可以通過(guò)安全的通道在兩個(gè)計(jì)算機(jī)之間建立安全的連接
?遠(yuǎn)程執(zhí)行命令:SSH允許用戶(hù)在遠(yuǎn)程主機(jī)上執(zhí)行命令,這對(duì)于自動(dòng)化腳本和遠(yuǎn)程管理非常有用
?文件傳輸:SSH協(xié)議還支持安全的文件傳輸,可以在客戶(hù)端和服務(wù)器之間進(jìn)行安全的文件傳輸和管理
作用
sshd 服務(wù)使用 SSH 協(xié)議可以用來(lái)進(jìn)行遠(yuǎn)程控制,或在計(jì)算機(jī)之間傳送文件。
ssh服務(wù)端主要包括兩個(gè)服務(wù)功能 ssh遠(yuǎn)程鏈接和sftp服務(wù)(文件傳輸功能)
3 SSH的 軟件
SSH 客戶(hù)端: xshell putty secureCRT MobaXterm finalshell
SSH 服務(wù)端:openSSH (Centos 7 默認(rèn)安裝)
4 有關(guān)系的程序
? OpenSSH:OpenSSH 是 SSH 協(xié)議的免費(fèi)開(kāi)源實(shí)現(xiàn),包括服務(wù)器端和客戶(hù)端程序。它支持加密和身份驗(yàn)證功能,被廣泛用于Linux和類(lèi)Unix系統(tǒng)上
? PuTTY:PuTTY 是一個(gè)流行的免費(fèi)的SSH和Telnet客戶(hù)端程序,可在Windows平臺(tái)上使用。它提供了SSH連接所需的工具和功能
? WinSCP:WinSCP 是一個(gè)免費(fèi)的SFTP、SCP和FTP客戶(hù)端程序,用于在Windows平臺(tái)上與遠(yuǎn)程計(jì)算機(jī)進(jìn)行安全文件傳輸。它支持SSH協(xié)議,提供了用戶(hù)友好的界面
? SecureCRT:SecureCRT 是一個(gè)商業(yè)化的SSH客戶(hù)端程序,提供了強(qiáng)大的功能和定制選項(xiàng),適用于Windows、Mac和Linux操作系統(tǒng)
5 公鑰傳輸原理
①客戶(hù)端發(fā)起連接請(qǐng)求
②服務(wù)端返回自己的公鑰,以及一個(gè)會(huì)話(huà)ID(這一步客戶(hù)端得到服務(wù)端公鑰)
③客戶(hù)端生成密鑰對(duì)
④客戶(hù)端用自己的公鑰或會(huì)話(huà)ID,計(jì)算出一個(gè)值Res,并用服務(wù)端的公鑰加密
⑤客戶(hù)端發(fā)送加密后的值到服務(wù)端,服務(wù)端用密鑰解密,得到Res
⑥服務(wù)端用解密后的Res或者是會(huì)話(huà)ID,計(jì)算出客戶(hù)端的公鑰(這一步服務(wù)端得到客戶(hù)端公鑰)
⑦最終:雙方各持有三個(gè)密鑰,分別為自己的一對(duì)公鑰、私鑰、以及對(duì)方的公鑰,之后的所有的通訊都會(huì)被加密。
6 加密通訊原理
詳細(xì)闡釋?zhuān)?/p>
首先ssh通過(guò)加密算法在客戶(hù)端產(chǎn)生密鑰對(duì)(公鑰和私鑰),公鑰發(fā)送給服務(wù)器端,自己保留私鑰,如果要想連接到帶有公鑰的SSH服務(wù)器,客戶(hù)端SSH軟件就會(huì)向SSH服務(wù)器發(fā)出請(qǐng)求,請(qǐng)求用聯(lián)機(jī)的用戶(hù)密鑰進(jìn)行安全驗(yàn)證。SSH服務(wù)器收到請(qǐng)求之后,會(huì)先在該SSH服務(wù)器上連接的用戶(hù)的家目錄下
7 ssh遠(yuǎn)程登錄文件
每次使用sshd登錄到其他主機(jī),雙方都會(huì)生成一個(gè)文件known_hosts把對(duì)方主機(jī)的公鑰在.ssh/known_hosts文件里。
8 如何確定此臺(tái)機(jī)器就是我要連的機(jī)器?
1. ssh [選項(xiàng)]mcb@192.168.11.9 #指定登錄用戶(hù)、目標(biāo)主機(jī)地址作為參數(shù)
2. ssh -p 20mcb@192.168.11.9 #-p為指定端口
二 ssh命令 遠(yuǎn)程連接
①直接連接:先輸入ssh IP
第一次連接服務(wù)端機(jī)器會(huì)詢(xún)問(wèn)是否要驗(yàn)證公鑰,同意就會(huì)自動(dòng)獲取服務(wù)端公鑰
驗(yàn)證是否連接正確服務(wù)機(jī),可查看服務(wù)端的公鑰
②連接指定用戶(hù)
① ssh 用戶(hù)名@IP地址
②ssh -l 用戶(hù)名 IP地址
③指定端口號(hào)
在 /etc/ssh/sshd_config文件修改端口號(hào)
sshd服務(wù)的默認(rèn)端口號(hào)是 22,如果不是此端口,需要 -p 來(lái)指定端口
[root@localhost ~]#vim /etc/ssh/sshd_config
[root@localhost ~]#systemctl restart sshd
在另一臺(tái)虛擬機(jī)驗(yàn)證,使用客戶(hù)機(jī)就需要指定端口號(hào)
跳板登錄
提供了一種安全的方式管理和連接位于內(nèi)部網(wǎng)絡(luò)中的主機(jī),同時(shí)限制了對(duì)內(nèi)部網(wǎng)絡(luò)的直接訪(fǎng)問(wèn)
#在目標(biāo)服務(wù)端主機(jī)上模擬防火墻拒絕客戶(hù)端連接,客戶(hù)端使用跳板連接到目標(biāo)主機(jī)上 [root@localhost .ssh]#iptables -A INPUT -s 192.168.11.5-j REJECT [root@localhost ~]#ssh -t 192.168.11.9 ssh 192.168.11.5
三 遠(yuǎn)程登錄直接執(zhí)行操作命令
#ssh 192.168.11.9 ifconfig
**白名單:**默認(rèn)拒絕所有,只有白名單上允許的人才可以訪(fǎng)問(wèn)
**黑名單:**默認(rèn)允許所有,只有黑名單上的用戶(hù)讓你不允許訪(fǎng)問(wèn)
注意 實(shí)驗(yàn)關(guān)閉防火墻 防護(hù) 黑白不能同時(shí)啟用
修改服務(wù)端配置文件
root@localhost ~]#vim /etc/ssh/sshd_config
① 白名單,只能登錄本機(jī)的mcb@用戶(hù)
別的用戶(hù)無(wú)法登錄
③禁止用戶(hù)登錄 ,此實(shí)驗(yàn)要反復(fù)去做
借鑒他人 [root@localhost ssh]#vim /etc/ssh/sshd_config #開(kāi)啟38 行 并改為 no,默認(rèn)注釋并寫(xiě)的yes 38PermitRootLogin no #注意雖然阻止了root 但是普通用戶(hù)可以使用su [root@localhost1 ~]#ssh zhangsan@192.168.91.100 -p 9527 zhangsan@192.168.91.100's password: Last login: Fri Aug2716:50:352021 [zhangsan@localhost2 ~]$ [zhangsan@localhost2 ~]$ su root 密碼: [root@localhost2 zhangsan]# 修改 pam認(rèn)證模塊 [root@localhost ssh]#vim /etc/pam.d/su #開(kāi)啟第6行,默認(rèn)注釋 6auth required pam_wheel.so use_uid
vim /etc/ssh/sshd_config
38 #PermitRootLogin yes 把yes該為no
Xshell就登陸不上
修改pam認(rèn)證模塊,只允許wheel組用戶(hù)可以使用 su
[root@localhost ~]# vim /etc/pam.d/su
6 #auth required pam_wheel.so use_uid
默認(rèn)是注釋掉,要讓6行開(kāi)啟
操作如下:
[root@localhost ~]# vim /etc/pam.d/su
太遺憾了,過(guò)程忘了
四 SSH服務(wù)的最佳實(shí)踐
①建議使用非默認(rèn)端口22
vim /etc/ssh/sshd_config #找到以下兩個(gè)配置項(xiàng): port 123 #設(shè)置特定的ssh服務(wù)端口號(hào)
②禁止使用 protocol version 1
因?yàn)镾SH協(xié)議版本一存在多個(gè)已知的安全漏洞,其使用的加密算法和密鑰交換機(jī)制相對(duì)較弱,易受到中間人攻擊等威脅
SSH 協(xié)議版本二已經(jīng)成為現(xiàn)代標(biāo)準(zhǔn),并且得到廣泛支持,絕大多數(shù) SSH 客戶(hù)端和服務(wù)器都默認(rèn)使用協(xié)議版本二,而且很多安全性工具也不再支持協(xié)議版本一
③限制可登錄用戶(hù)(白名單)
④設(shè)定空閑會(huì)話(huà)超時(shí)時(shí)長(zhǎng)
vim /etc/ssh/sshd_config #找到以下兩個(gè)配置項(xiàng): ClientAliveInterval 0 ClientAliveCountMax 3
ClientAliveInterval:表示服務(wù)器向客戶(hù)端發(fā)送空閑會(huì)話(huà)確認(rèn)消息的時(shí)間間隔,單位為秒。默認(rèn)值為0,表示不發(fā)送確認(rèn)消息。將其設(shè)置為一個(gè)正整數(shù),表示每隔多長(zhǎng)時(shí)間向客戶(hù)端發(fā)送一次確認(rèn)消息。
ClientAliveCountMax:表示服務(wù)器向客戶(hù)端發(fā)送確認(rèn)消息后,客戶(hù)端沒(méi)有響應(yīng)的最大次數(shù)。默認(rèn)值為3,表示如果服務(wù)器連續(xù)發(fā)送3次確認(rèn)消息后,客戶(hù)端仍未響應(yīng),則認(rèn)為客戶(hù)端已經(jīng)斷開(kāi)連接。將其設(shè)置為一個(gè)正整數(shù),表示服務(wù)器最多發(fā)送多少次確認(rèn)消息后,認(rèn)為客戶(hù)端已經(jīng)斷開(kāi)連接
⑤利用防火墻設(shè)置SSH訪(fǎng)問(wèn)策略
#利用防火墻禁止特定IP地址:172.16.12.10訪(fǎng)問(wèn) iptables -A INPUT -s 172.16.12.10 -j REJECT
⑥僅監(jiān)聽(tīng)特定的IP地址、公網(wǎng)、內(nèi)網(wǎng)
vim /etc/ssh/sshd_config #找到以下三個(gè)配置項(xiàng): ClientAliveInterval 300 ClientAliveCountMax 2 ListenAddress 192.168.11.10
ClientAliveInterval:表示SSH服務(wù)器將向客戶(hù)端發(fā)送空閑會(huì)話(huà)檢查的時(shí)間間隔(以秒為單位),默認(rèn)值為0,表示禁用此功能
ClientAliveCountMax:表示SSH服務(wù)器將向客戶(hù)端發(fā)送空閑會(huì)話(huà)檢查的最大次數(shù),如果達(dá)到此次數(shù)后仍未收到客戶(hù)端的響應(yīng),則會(huì)話(huà)將被終止,默認(rèn)值為3
ListenAddress:監(jiān)聽(tīng)特定的IP地址的SSH連接
⑦基于口令認(rèn)證時(shí),使用強(qiáng)密碼策略
1. 比如:tr -cd [a-zA-Z0-9] < /dev/random ?| ?head -c 12 | xargs
2. #設(shè)定12位的隨機(jī)密碼
⑧使用基于密鑰的認(rèn)知
⑨禁止使用空密碼
vim /etc/ssh/sshd_config #找到以下一個(gè)配置項(xiàng): PermitEmptyPasswords no #禁止使用空密碼
⑩禁止root用戶(hù)直接登錄
11 限制ssh的訪(fǎng)問(wèn)頻率和并發(fā)在線(xiàn)數(shù)
vim /etc/ssh/sshd_config #找到以下一個(gè)配置項(xiàng): MaxStartups 10 #最多允許10個(gè)并發(fā)連接,如果超過(guò)這個(gè)數(shù)量,會(huì)拒絕新的連接
使用PAM模塊:通過(guò)Pluggable Authentication Modules (PAM) 可以實(shí)現(xiàn)更復(fù)雜的控制,
例如限制用戶(hù)的并發(fā)登錄數(shù)
使用防火墻:你也可以使用防火墻軟件如iptables來(lái)限制從特定IP地址發(fā)起的并發(fā)SSH連接數(shù)
12 經(jīng)常分析日志分離
獨(dú)立sshd服務(wù)日志文件:默認(rèn)sshd服務(wù)日志在/var/log/secure下,可通過(guò)rsyslog程序?qū)shd服務(wù)日志文件獨(dú)立出來(lái)放到特定的文件夾中,方便查看和管理。
(具體操作請(qǐng)查看《Linux文件系統(tǒng)與日志分析》博客)
使用日志分析工具:可以使用工具如grep、awk、sed等來(lái)分析SSH日志文件。這些工具可以幫助搜索特定的關(guān)鍵字、過(guò)濾信息、提取有用的數(shù)據(jù)等
設(shè)置日志輪轉(zhuǎn):為了避免日志文件過(guò)大,可以配置日志輪轉(zhuǎn)。通過(guò)日志輪轉(zhuǎn),舊的日志文件會(huì)被重命名并壓縮,同時(shí)創(chuàng)建新的日志文件。可以使用logrotate工具來(lái)實(shí)現(xiàn)日志輪轉(zhuǎn),并在其配置文件中指定SSH日志文件的處理方式(具體操作請(qǐng)查看《Linux文件系統(tǒng)與日志分析》博客)
五 openSSH服務(wù)器配置文件
openSSH是實(shí)現(xiàn)SSH協(xié)議的開(kāi)源軟件項(xiàng)目,適用于各種UNIX、Linux操作系統(tǒng)
執(zhí)行“systemctl start sshd”命令即可啟動(dòng)sshd服務(wù),默認(rèn)端口使用的22端口
服務(wù)名稱(chēng):sshd
服務(wù)端主程序:/usr/sbin/sshd
服務(wù)端配置文件:/etc/ssh/sshd_config
客戶(hù)端配置文件:/etc/ssh/ssh_config
1 ssh配置文件信息
在linux中實(shí)現(xiàn)ssh,是通過(guò)opsnSSH的sshd服務(wù)提供的
2 存放ssh服務(wù)端的配置文件 /etc/ssh/sshd_config
[root@localhost ~]#vim /etc/ssh/sshd_config
六 密鑰對(duì)免交互 驗(yàn)證登錄
有密碼又無(wú)需輸入密碼
1 創(chuàng)建密鑰,生成rsa算法密鑰
2 傳送到遠(yuǎn)程主機(jī)
3 登錄驗(yàn)證
七 免交互登錄
客戶(hù)端先輸入 ssh-agent bash 將這個(gè)命令交給 bash 去管理
再輸入 ssh-add 是將用戶(hù)的私鑰添加到運(yùn)行中的 ssh-agent 中,這樣在后續(xù)的SSH連接過(guò)程中,就不需要每次都手動(dòng)輸入私鑰的密碼了。一旦私鑰被添加到ssh-agent 中,它會(huì)暫時(shí)保存解密后的私鑰以供后續(xù)使用
[root@localhost .ssh]# ssh-agent bash #把sh-agent交給進(jìn)程管理 [root@localhost .ssh]# ssh-add #把密碼交給sh-agent Enter passphrase for /root/.ssh/id_rsa: #輸入密鑰文件密碼 Identity added: /root/.ssh/id_rsa (/root/.ssh/id_rsa) [root@localhost .ssh]# ssh 192.168.11.6 #無(wú)需密碼即可登錄,重啟后失效 Last login: Sun Jan 21 1403 2024 from 192.168.11.9 注:機(jī)器重啟就會(huì)失效
鏈接:https://blog.csdn.net/MCB134/article/details/135577909
-
服務(wù)器
+關(guān)注
關(guān)注
13文章
9797瀏覽量
88038 -
WINDOWS
+關(guān)注
關(guān)注
4文章
3614瀏覽量
91451 -
客戶(hù)端
+關(guān)注
關(guān)注
1文章
301瀏覽量
17098 -
SSH
+關(guān)注
關(guān)注
0文章
196瀏覽量
16960
原文標(biāo)題:SSH遠(yuǎn)程登錄保姆級(jí)教程:從零到精通,告別連接失敗!
文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
如何遠(yuǎn)程登錄云服務(wù)器?登錄失敗是什么原因?
如何實(shí)現(xiàn)遠(yuǎn)程登錄ssh并配置為開(kāi)機(jī)啟動(dòng)
如何使用SSH遠(yuǎn)程命令登錄香橙派開(kāi)發(fā)板
SSH遠(yuǎn)程登錄香橙派Zero2開(kāi)發(fā)板的操作方法
路由器方案板香橙派R1 Plus如何使用SSH遠(yuǎn)程登錄
如何在Ubuntu下實(shí)現(xiàn)SSH遠(yuǎn)程登錄開(kāi)發(fā)板的設(shè)計(jì)呢
如何使用ssh遠(yuǎn)程登錄虛擬機(jī)?
linux系統(tǒng)如何登錄到遠(yuǎn)程linux服務(wù)器

【米爾MYD-J1028X開(kāi)發(fā)板試用體驗(yàn)】實(shí)現(xiàn)SSH遠(yuǎn)程登錄,系統(tǒng)測(cè)評(píng)

SSH/Telnet設(shè)備遠(yuǎn)程登錄方式實(shí)際綜合運(yùn)用

交換機(jī)如何配置SSH遠(yuǎn)程登錄

SSH遠(yuǎn)程操作的基本方式

禁止使用root用戶(hù)通過(guò)ssh遠(yuǎn)程登錄Linux

評(píng)論