目錄
一、SSH基礎(chǔ)
1、什么是ssh服務(wù)器
2、對(duì)比一下ssh協(xié)議與telnet協(xié)議
3、常見(jiàn)的底層為ssh協(xié)議的軟件:
4、拓展
二、SSH軟件學(xué)習(xí)
1、ssh服務(wù)軟件學(xué)習(xí)?
2、sshd公鑰傳輸?shù)脑恚?/p>
3、ssh命令學(xué)習(xí):
4、學(xué)習(xí)解讀sshd服務(wù)配置文件:
三、ssh服務(wù)的應(yīng)用
1、使用密鑰對(duì)免密碼登錄
第一步:在客戶(hù)端自己生成一對(duì)密鑰(使用命令ssh-keygen)
第二步:將公鑰文件導(dǎo)入給服務(wù)器,檢查自己會(huì)產(chǎn)生一個(gè)known_hosts文件,服務(wù)器對(duì)應(yīng)用戶(hù)的家目錄的.ssh目錄下也會(huì)產(chǎn)生一個(gè)authorized_keys文件。
第三步:驗(yàn)證是否免密:(這個(gè)是單向的,如果需要服務(wù)器也能連接客戶(hù)端,那么還需要在服務(wù)器同樣做設(shè)置)
?2、黑白名單設(shè)置
黑白名單的語(yǔ)法:
第一種:白名單
第二種: 黑名單
一、SSH基礎(chǔ)
1、什么是ssh服務(wù)器
ssh是一種安全通道協(xié)議,主要用來(lái)實(shí)現(xiàn)遠(yuǎn)程登錄、數(shù)據(jù)傳輸?shù)?;ssh協(xié)議對(duì)通信雙方的數(shù)據(jù)傳輸進(jìn)行加密處理,其中包括用戶(hù)登錄時(shí)輸入的用戶(hù)口令,ssh為建立在應(yīng)用層和傳輸層基礎(chǔ)上的安全協(xié)議。
2、對(duì)比一下ssh協(xié)議與telnet協(xié)議
telnet協(xié)議:是明文的,端口號(hào)是tcp的23端口;
ssh協(xié)議:數(shù)據(jù)傳輸是加密的,可以防止信息泄露;數(shù)據(jù)傳輸是壓縮的,可以提高傳輸?shù)乃俣龋欢丝谑莟cp的22端口;
SSH(Secure Shell)目前較可靠,是專(zhuān)為遠(yuǎn)程登錄會(huì)話(huà)和其他網(wǎng)絡(luò)服務(wù)提供安全性的協(xié)議。利用SSH協(xié)議可以有效防止遠(yuǎn)程管理過(guò)程中的信息泄露問(wèn)題,透過(guò)SSH可以對(duì)所有傳輸?shù)臄?shù)據(jù)進(jìn)行加密,也能夠防止DNS欺騙和IP欺騙。
3、常見(jiàn)的底層為ssh協(xié)議的軟件:
Linux客戶(hù)端: ssh, scp, sftp,slogin
Windows客戶(hù)端:xshell, MobaXterm,putty, securecrt
OpenSSH 是實(shí)現(xiàn)SSH協(xié)議的開(kāi)源軟件項(xiàng)目,適用于各種UNIX、 Linux 操作系統(tǒng)。
Centos 7系統(tǒng)默認(rèn)已安裝openssh相關(guān)軟件包,并將sshd 服務(wù)添加為開(kāi)機(jī)自啟動(dòng)。
執(zhí)行"systemctl start sshd"命令即可啟動(dòng)sshd 服務(wù)
4、拓展
Windows上自帶的遠(yuǎn)程連接工具是mstsc,是使用的tcp的3389端口,使用的RDP協(xié)議
?
二、SSH軟件學(xué)習(xí)
1、ssh服務(wù)軟件學(xué)習(xí)?
軟件名:openssh(在centos7中為openssh-server)
服務(wù)名稱(chēng):sshd
服務(wù)端主程序:/usr/sbin/sshd
服務(wù)端配置文件:/etc/ssh/sshd_config ##ssh服務(wù)端主要包括兩個(gè)服務(wù)功能 ssh遠(yuǎn)程鏈接和sftp服務(wù)(文件傳輸功能)
客戶(hù)端配置文件:/etc/ssh/ssh_config
2、sshd公鑰傳輸?shù)脑恚?/h3>
-
客戶(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ì)被加密
原理是這樣,但是在實(shí)際操作中客戶(hù)端把服務(wù)器的公鑰記錄在了~/.ssh/known_hosts文件中
拓展:
思考我們登錄時(shí)怎么確認(rèn)是不是我需要連接的服務(wù)器?(有個(gè)前提是我能碰的著服務(wù)器)
首先在客戶(hù)端連接服務(wù)器:
服務(wù)器連接自己試試:
3、ssh命令學(xué)習(xí):
ssh命令的語(yǔ)法:ssh [選項(xiàng)] 用戶(hù)名@服務(wù)器ip地址或域名
選項(xiàng):
-p 端口號(hào):不加默認(rèn)是22號(hào)端口,如果是端口被修改了,需要指定端口號(hào);
-l 用戶(hù)名:這個(gè)和“用戶(hù)名@”效果一樣;
-t 跳板機(jī)服務(wù)器ip地址:比如需要訪(fǎng)問(wèn)外網(wǎng)的時(shí)候,需要先過(guò)內(nèi)外網(wǎng)服務(wù)器等等;
-o 配置文件參數(shù)變量值:比如ssh 192.168.20.10 -o StrictHostKeyChecking=no (允許免密登錄)
ssh 還能直接跟上命令
如:
ssh 192.168.91.101 hostname (顯示遠(yuǎn)程服務(wù)器的主機(jī)名)
4、學(xué)習(xí)解讀sshd服務(wù)配置文件:
[root@localhost /]#vim /etc/ssh/sshd_config
17 #Port 22
##這是sshd服務(wù)監(jiān)聽(tīng)的端口,為了安全起見(jiàn),建議更改默認(rèn)端口為一個(gè)五位數(shù)以上的端口號(hào)
18 #AddressFamily any
19 #ListenAddress 0.0.0.0 ##可以改為自己的自己的ip地址
20 #ListenAddress ::##用來(lái)設(shè)置sshd服務(wù)器綁定的IP地址
32 SyslogFacility AUTHPRIV
33 #LogLevel INFO
##當(dāng)有人使用 SSH 登入系統(tǒng)的時(shí)候,SSH 會(huì)記錄信息,這個(gè)信息要記錄的類(lèi)型為AUTHPRIV,sshd 服務(wù)日志存放在:/var/log/secure。
##可以做日志分離優(yōu)化
##LogLevel用來(lái)設(shè)定sshd日志消息的級(jí)別,與上面記錄的等級(jí)息息相關(guān)
35 # Authentication:
##限制用戶(hù)必須在指定的時(shí)限內(nèi)認(rèn)證成功,0 表示無(wú)限制。默認(rèn)值是 120 秒
37 #LoginGraceTime 2m
##LoginGraceTime用來(lái)設(shè)定如果用戶(hù)登錄失敗,在切斷連接前服務(wù)器需要等待的時(shí)間,單位為妙
38 #PermitRootLogin yes
##PermitRootLogin用來(lái)設(shè)置能不能以root身份ssh登錄,
40 #MaxAuthTries 6
##用來(lái)設(shè)置最大失敗嘗試登陸次數(shù)為6
41 #MaxSessions 10
##設(shè)置同一個(gè)連接最大會(huì)話(huà)
43 #PubkeyAuthentication yes
##基于key驗(yàn)證(生產(chǎn)中需要打開(kāi))
63 #PasswordAuthentication yes
64 #PermitEmptyPasswords no ##是否允許空密碼登錄,no表示不允許,需要密碼??!
##密碼驗(yàn)證建議還是需要的!可以通過(guò)認(rèn)證的秘鑰來(lái)登陸,來(lái)減少密碼交互。
65 PasswordAuthentication yes
##基于用戶(hù)名和密碼連接,默認(rèn)為yes
96 UsePAM yes
##設(shè)置是否通過(guò)PAM驗(yàn)證,需要的
98 #AllowAgentForwarding yes ##允許代理
99 #AllowTcpForwarding yes ##允許tcp那個(gè)代理
100 #GatewayPorts no
##設(shè)置是否允許遠(yuǎn)程客戶(hù)端使用本地主機(jī)的端口轉(zhuǎn)發(fā)功能,出于安全考慮,建議禁止
115 #UseDNS no
##UseDNS是否使用dns反向解析,建議關(guān)閉,內(nèi)網(wǎng)改為no可以提高速度
這是可以添加的選項(xiàng):
#AllowUsers<用戶(hù)名1> <用戶(hù)名2> <用戶(hù)名3> ...
##指定允許通過(guò)遠(yuǎn)程訪(fǎng)問(wèn)的用戶(hù),多個(gè)用戶(hù)以空格隔開(kāi)
比如:AllowUsers zhangsan@192.168.91.101 lisi
##默認(rèn)拒絕所有
##允許所有的主機(jī)訪(fǎng)問(wèn)我的lisi用戶(hù)
##只允許192.168.91.101上的所有用戶(hù)訪(fǎng)問(wèn)本機(jī)的zhangsan用戶(hù)
#AllowGroups<組名1> <組名2> <組名3> ...
##指定允許通過(guò)遠(yuǎn)程訪(fǎng)問(wèn)的組,多個(gè)組以空格隔開(kāi)。當(dāng)多個(gè)用戶(hù)需要通過(guò)ssh登錄系統(tǒng)時(shí),可將所有用戶(hù)加入一個(gè)組中。
#DenyUsers<用戶(hù)名1> <用戶(hù)名2> <用戶(hù)名3> ...
##指定禁止通過(guò)遠(yuǎn)程訪(fǎng)問(wèn)的用戶(hù),多個(gè)用戶(hù)以空格隔開(kāi)
舉例:DenyUsers liwu
#拒絕liwu被訪(fǎng)問(wèn)
#DenyGroups<組名1> <組名2> <組名3> ...
##指定禁止通過(guò)遠(yuǎn)程訪(fǎng)問(wèn)的組,多個(gè)組以空格隔開(kāi)。
三、ssh服務(wù)的應(yīng)用
1、使用密鑰對(duì)免密碼登錄
第一步:在客戶(hù)端自己生成一對(duì)密鑰(使用命令ssh-keygen)
##使用命令生成一對(duì)密鑰
[root@localhost .ssh]#ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): ##默認(rèn)放在用戶(hù)的家目錄下的~/.ssh/下
Enter passphrase (empty for no passphrase): ##對(duì)密鑰文件加密,密碼至少5個(gè)字符
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:VqCGTmM6KO1NlBm1NNuCUZYE7ZXsCrZedcKdDaS4kFQ root@localhost.localdomain
The key's randomart image is:
+---[RSA 2048]----+
| =BEo.o. |
| . @oB+o. |
| %.B+o..+ |
| o *o+.o=.+ . |
|o +.oo.oSo |
|.. +. o. |
| .... |
| . |
| |
+----[SHA256]-----+
##驗(yàn)證密鑰對(duì)成功創(chuàng)建
[root@localhost .ssh]#ls
id_rsa id_rsa.pub
第二步:將公鑰文件導(dǎo)入給服務(wù)器,檢查自己會(huì)產(chǎn)生一個(gè)known_hosts文件,服務(wù)器對(duì)應(yīng)用戶(hù)的家目錄的.ssh目錄下也會(huì)產(chǎn)生一個(gè)authorized_keys文件。
第三步:驗(yàn)證是否免密:(這個(gè)是單向的,如果需要服務(wù)器也能連接客戶(hù)端,那么還需要在服務(wù)器同樣做設(shè)置)
?2、黑白名單設(shè)置
黑白名單的語(yǔ)法:
#AllowUsers<用戶(hù)名1> <用戶(hù)名2> <用戶(hù)名3> ...
##指定允許通過(guò)遠(yuǎn)程訪(fǎng)問(wèn)的用戶(hù),多個(gè)用戶(hù)以空格隔開(kāi)
比如:AllowUsers zhangsan@192.168.91.101 lisi
##默認(rèn)拒絕所有
##允許所有的主機(jī)訪(fǎng)問(wèn)我的lisi用戶(hù)
##只允許192.168.91.101上的所有用戶(hù)訪(fǎng)問(wèn)本機(jī)的zhangsan用戶(hù)
#AllowGroups<組名1> <組名2> <組名3> ...
##指定允許通過(guò)遠(yuǎn)程訪(fǎng)問(wèn)的組,多個(gè)組以空格隔開(kāi)。當(dāng)多個(gè)用戶(hù)需要通過(guò)ssh登錄系統(tǒng)時(shí),可將所有用戶(hù)加入一個(gè)組中。
#DenyUsers<用戶(hù)名1> <用戶(hù)名2> <用戶(hù)名3> ...
##指定禁止通過(guò)遠(yuǎn)程訪(fǎng)問(wèn)的用戶(hù),多個(gè)用戶(hù)以空格隔開(kāi)
舉例:DenyUsers liwu
#拒絕liwu被訪(fǎng)問(wèn)
#DenyGroups<組名1> <組名2> <組名3> ...
##指定禁止通過(guò)遠(yuǎn)程訪(fǎng)問(wèn)的組,多個(gè)組以空格隔開(kāi)。
第一種:白名單
[root@localhost ssh]#vim /etc/ssh/sshd_config
#手動(dòng)添加
AllowUsers zhangsan@192.168.20.10
##表示只允許192.168.20.10主機(jī)上的任意用戶(hù)能夠連接zhangsan
##并且默認(rèn)拒絕所有
第二種: 黑名單
##服務(wù)器上添加黑名單
[root@localhost .ssh]#vim /etc/ssh/sshd_config
2 DenyUsers xueyin@192.168.20.10
拓展:WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!報(bào)錯(cuò)
翻譯為:提醒你遠(yuǎn)程主機(jī)的身份已經(jīng)修改了;
系統(tǒng)之前連接過(guò)192.168.20.10,記錄了它的公鑰,現(xiàn)在換了一臺(tái)主機(jī)ip也是這個(gè),但是公鑰與緩存不一致,所以ssh好心提醒一下;
解決思路:根據(jù)生產(chǎn)環(huán)境需求,如果是安全的,那么刪掉本地的密鑰緩存(刪除~/.ssh/known_hosts文件中的對(duì)應(yīng)192.168.20.10的公鑰)。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-762200.html
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-762200.html
到了這里,關(guān)于【Linux網(wǎng)絡(luò)】ssh服務(wù)與配置,實(shí)現(xiàn)安全的密鑰對(duì)免密登錄的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!