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

【米爾MYD-J1028X開發板試用體驗】實現SSH遠程登錄,系統測評

SSH/Telnet設備遠程登錄方式實際綜合運用

評論