ssh遠端登入協議

红荼發表於2024-05-05

ssh遠端登入協議

什麼是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 MD5:cf:5f:ec:a4:cc:73:0a:d9:92:7e:35:bd:42:8e:a0:bb.
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		#將金鑰檔案複製給服務端,並輸入一次伺服器端密碼

相關文章