什么是ssh
SSH即安全外殼協議(Secure Shell),是一種網絡協議,用于在計算機網絡上提供安全的遠程登錄和命令執行功能。SSH通過加密通信通道來保護數據傳輸,防止敏感信息在傳輸過程中被竊聽或篡改。SSH支持多種身份驗證方法,包括密碼、公鑰和證書等,以確保只有授權用戶能夠訪問系統。除了遠程登錄,SSH還支持文件傳輸和端口轉發等功能,使得SSH成為一種廣泛使用的安全遠程管理工具。
ssh原理
1.客戶端連接服務器的SSH服務端口(默認是22),發送隨機數、支持的加密算法列表、SSH版本號等信息。
2.服務器端SSH服務端程序會選擇一個加密算法和HASH算法,并生成自己的公鑰,發送給客戶端。
3.客戶端收到服務器的公鑰后,會進行驗證,如果公鑰合法,客戶端會生成會話密鑰,用服務器的公鑰加密,發送給服務器。
4.服務器收到客戶端發來的會話密鑰后,用自己的私鑰解密,確認會話密鑰的合法性。
5.服務器和客戶端用會話密鑰、HASH算法、加密算法等信息生成一個新的密鑰,用于后續數據傳輸的加密。
6.完成上述過程后,客戶端和服務器端就可以開始進行加密的數據傳輸了。
ssh登錄
ssh [遠程主機用戶名]@[遠程服務器主機名或IP地址] -p
-l :-l 選項,指定登錄名稱。
-p: -p 選項,指定登錄端口(當服務端的端口非默認時,需要使用-p 指定端口進行登錄)
[root@localhost named]# ssh 192.168.10.20 #若沒有修改配置,默認的端口為22 The authenticity of host '192.168.10.20 (192.168.10.20)' can't be established. ECDSA key fingerprint is SHA256:KtaBKXckd5FGPVjjbVKvTH7FlTeo5/gNAXFWe9UlBlY. ECDSA key fingerprint is MD55fa473:0a92:7e:3542:8ebb. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.10.20' (ECDSA) to the list of known hosts. root@192.168.10.20's password: Last failed login: Sun May 5 15:12:57 CST 2024 from 192.168.10.10 on ssh:notty There was 1 failed login attempt since the last successful login. Last login: Sat May 4 17:08:06 2024 from 192.168.10.1 [root@localhost ~]# ##這是192.168.10.20里
服務器ssh配置
ssh配置文件:/etc/ssh/sshd-config
通過修改配置文件來改變ssh的配置
ListenAddress ip #監聽地址設置SSHD服務器綁定的IP 地址,0.0.0.0 表示偵聽所有地址安全建議:如果主機不需要從公網ssh訪問,可以把監聽地址改為內網地址 這個值可以寫成本地IP地址,也可以寫成所有地址,即0.0.0.0 表示所有IP。 LoginGraceTime 2m #用來設定如果用戶登錄失敗,在切斷連接前服務器需要等待的時間,單位為秒 PermitRootLogin yes #默認 ubuntu不允許root遠程ssh登錄 StrictModes yes #檢查.ssh/文件的所有者,權限等 MaxAuthTries #用來設置最大失敗嘗試登陸次數為6 MaxSessions 10 #同一個連接最大會話 PubkeyAuthentication yes #基于key驗證 PermitEmptyPasswords no #密碼驗證當然是需要的!所以這里寫 yes,也可以設置為 no,在真實的生產服務器上,根據不同安全級別要求,有的是設置不需要密碼登陸的,通過認證的秘鑰來登陸。 PasswordAuthentication yes #基于用戶名和密碼連接 GatewayPorts no ClientAliveInterval 10 #單位:秒 ClientAliveCountMax 3 #默認3 UseDNS yes #提高速度可改為no 內網改為no 禁用反向解析 GSSAPIAuthentication yes #提高速度可改為no MaxStartups #未認證連接最大值,默認值10 Banner /path/file #以下可以限制可登錄用戶的辦法:白名單 黑名單 #修改默認端口 [root@localhost ssh]#vim /etc/ssh/sshd_config #17 行修改自己默認的端口 17 Port 9527
ssh免密登錄
通過ssh來生成并發送到指定的IP地址
[root@localhost ~]# ssh-keygen -t rsa#生成ssh的公密鑰 Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): /root/.ssh/id_rsa already exists. Overwrite (y/n)? y Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: SHA256:4yEc1dbyJg7OaJoB7HV8em3EpJgrmFV9w0tQcEqcR0Q root@localhost.localdomain The key's randomart image is: +---[RSA 2048]----+ | o=@E. | | .o+o@ . | | . o.o.O = | | o o.=.+ = o | | . * .oBS= o | | + o =o+o+ | | * ... | | o | | | +----[SHA256]-----+ [root@localhost ~]# ssh-copy-id -i root@192.168.10.10 #發送到 /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub" /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys root@192.168.10.10's password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'root@192.168.10.10'" and check to make sure that only the key(s) you wanted were added. [root@localhost ~]# ssh root@192.168.10.10 Last login: Sun May 5 16:58:06 2024 from 192.168.10.20 [root@localhost ~]# ssh-copy-id -i root@服務端IP#將密鑰文件拷貝給服務端,并輸入一次服務器端密碼
-
服務器
+關注
關注
12文章
9303瀏覽量
86061 -
SSH協議
+關注
關注
0文章
5瀏覽量
1638
原文標題:新手必看!深入解析SSH協議,輕松實現安全高效的服務器管理
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
使用 PuTTY 遠程登錄管理服務器 -- 轉載
OpenSSH的SSH協議實現
![OpenSSH的<b class='flag-5'>SSH</b><b class='flag-5'>協議</b><b class='flag-5'>實現</b>](https://file.elecfans.com/web1/M00/48/03/o4YBAFqmL8iAc9cwAAAUmLw2qa4241.png)
評論