一淘太、SSH 原理圖?
二、SSH原理描述
? ? ? ? 1、什么是SSH
? ? ? ? ? ? ?SSH是專門為了遠(yuǎn)程登錄會(huì)話和其他網(wǎng)絡(luò)服務(wù)提供的安全性協(xié)議,使用SSH協(xié)議可以有效的防止遠(yuǎn)程連接會(huì)話的時(shí)候出現(xiàn)信息泄密箕般,在數(shù)據(jù)傳輸?shù)臅r(shí)候SSH會(huì)先對(duì)聯(lián)機(jī)的數(shù)據(jù)包通過加密技術(shù)進(jìn)行加密處理,加密后在進(jìn)行數(shù)據(jù)的傳輸舔清,確保了傳輸中的安全性,SSH服務(wù)主要提供兩個(gè)服務(wù)功能:一個(gè)是遠(yuǎn)程聯(lián)機(jī)的SSH服務(wù)丝里,一個(gè)是借助SSH協(xié)議來傳輸數(shù)據(jù)的SFTP服務(wù)
? ? ? ? 2可柿、SSH原理闡述
? ? ? ? ? ? ??① 服務(wù)端開啟ssh服務(wù)監(jiān)聽22端口
② 客戶端發(fā)送聯(lián)機(jī)請(qǐng)求(攜帶IP和端口)
”摺③ 客戶端服務(wù)端進(jìn)行聯(lián)機(jī)加密認(rèn)證
④ 認(rèn)證通過聯(lián)機(jī)成功
? ? ? ? 3营密、SSH的兩種認(rèn)證方式
? ? ? ? ? ? ??① 基于密碼口令的認(rèn)證
⌒得健② 基于秘鑰的安全認(rèn)證
? ? ? ? 4、SSH認(rèn)證類型闡述
? ? ? ? ? ? ??基于密碼口令的方式:
基于密碼的安全認(rèn)證就是我們一直在用的评汰,只要知道服務(wù)器的SSH連接賬號(hào)和密碼(當(dāng)然也要知道服務(wù)器的IP和端口(默認(rèn)22))纷捞,就可以通過客戶端遠(yuǎn)程登錄到主機(jī)了,所以的傳輸過程都是加密的
基于秘鑰的安全認(rèn)證:
”蝗ァ① 運(yùn)行SSH服務(wù)主儡,生成密鑰對(duì)
② 客戶端發(fā)送公鑰到服務(wù)端(通過ssh-copy-id或者其他的方式)
〔依隆③ 客戶端發(fā)送連接請(qǐng)求
? ? ? ? ? ? ? ? ? ? ? ④ 服務(wù)端進(jìn)行對(duì)密鑰的驗(yàn)證
∶又怠⑤ 驗(yàn)證成功服務(wù)端將用公鑰加密質(zhì)詢,發(fā)送給客戶端
∨髂⑥ 客戶端用自己的私鑰解密質(zhì)詢
〖呕恪⑦ 客戶端將解密后的質(zhì)詢發(fā)送給服務(wù)端
⑧ 服務(wù)端驗(yàn)證質(zhì)詢
〉啡尽⑨ 驗(yàn)證通過骄瓣,建立連接
? ? ? ? 5、SSH聯(lián)機(jī)加密過程原理闡述
補(bǔ)充:SSH2版本中為了修補(bǔ)SSH1中不驗(yàn)證整合秘鑰對(duì)的漏洞耍攘,加入了一個(gè)確認(rèn)聯(lián)機(jī)正確性的Diffie-Hellman機(jī)制(每次聯(lián)機(jī)都會(huì)進(jìn)行秘鑰對(duì)的校驗(yàn))
三榕栏、SSH搭建部署
安裝ssh服務(wù)
yum -y?install?openssh openssl
啟動(dòng)服務(wù)
systemctl start sshd
配置文件
tree?/etc/ssh/
/etc/ssh/
├── moduli
├── ssh_config?? 客戶端配置文件
├── sshd_config 服務(wù)端配置文件
├── ssh_host_ecdsa_key
├── ssh_host_ecdsa_key.pub
├── ssh_host_ed25519_key
├── ssh_host_ed25519_key.pub
├── ssh_host_rsa_key
└── ssh_host_rsa_key.pub
使用
基于密碼的連接
ssh?root@192.168.163.129
也可以之家連接執(zhí)行命令
ssh?root@192.168.163.130?ifconfig?ens33
四、SSH企業(yè)級(jí)優(yōu)化
在SSH 配置文件中有很多項(xiàng)是可以做優(yōu)化的vim?/etc/sshd_config?
Port????#默認(rèn)22端口蕾各,修改其他端口
ListenAddress?????# 指定特定的監(jiān)聽地址PermitEmptyPasswords????# 是否允許密碼為空的用戶遠(yuǎn)程登錄扒磁,默認(rèn)為no
PermitRootLogin????# 是否允許root登錄,默認(rèn)yes示损,改為no安全些
UseDNS????# dns解析渗磅,默認(rèn)yes 要改為no 提高速度GSSAPIAuthentication????# 解決linux之間使用遠(yuǎn)程連接慢的問題??
快速更改優(yōu)化方法使用sed命令\cp?/etc/ssh/sshd_config{,.bak}
sed?-i?'s%#Port 22%Port 56666%'?/etc/ssh/sshd_config
sed?-i?'s%#PermitEmptyPasswords no%PermitEmptyPasswords no%'?/etc/ssh/sshd_config?
sed?-i?'s%#PermitRootLogin yes%PermitRootLogin no%'?/etc/ssh/sshd_config?
sed?-i?'s%#UseDNS yes%UseDNS no%'?/etc/ssh/sshd_config?
sed?-i?'s%GSSAPIAuthentication yes%GSSAPIAuthentication no%'?/etc/ssh/sshd_config?a=$(ifconfig??|?awk?-F [" ":]+?'NR==2{print $3}') |?
sed?-i?'s%#ListenAddress 0.0.0.0%ListenAddress '$a' %'?/etc/ssh/sshd_config?egrep?"UseDNS|GSSAPIAuthentication|PermitRootLogin|PermitEmptyPasswords|ListenAddress|Port"?/etc/ssh/sshd_config?
?一條命令搞定a=$(ifconfig?|?awk?-F [" ":]+?'NR==2{print $3}') |?sed?-ir?'13 iPort 56666\nPermitRootLogin no\nPermitEmptyPasswords no\nUseDNS no\nGSSAPIAuthentication no\nListenAddress '$a''?/etc/ssh/sshd_config??
重啟服務(wù)systemctl restart sshd
五、SSH擴(kuò)展(非交互式功能)
? ? ? ? ? 1检访、expect
? ? ? ? ? 2始鱼、sshpass
? ? ? ? ? 3、pssh
六脆贵、SHH總結(jié)
? ? ? ? ?① SSH是安全加密協(xié)議医清,用于遠(yuǎn)程連接linux服務(wù)器
? ② SSH默認(rèn)端口是22,安全協(xié)議版本是SSH2卖氨,除了SSH2還有SSH1会烙,但是1有漏洞
? ③ SSH服務(wù)端只要包含兩個(gè)服務(wù)负懦,一個(gè)是SSH一個(gè)是SFTP
? ④ Linux SSH 客戶端包含ssh遠(yuǎn)程連接命令,以及遠(yuǎn)程scp命令等
? ⑤ SSH配置文件的優(yōu)化很重要柏腻,可以提高服務(wù)器的安全性纸厉,也可以提高遠(yuǎn)程連接的速度
七、SSH錯(cuò)誤及解決辦法
首先五嫂、確保server端的ssh服務(wù)是開的(service shhd start)
然后在client端輸入:?ssh?usrname@serverip (遠(yuǎn)程登錄)
scp?filename usrname@serverip:/URL?(遠(yuǎn)程傳輸)
常出現(xiàn)的問題:
問題一
ssh登錄的時(shí)候鏈接端口失敗
提示(1):
# ssh 192.168.***.**
ssh: connect to host 192.168.***.** port 22: No route to host
這由于server端沒有開機(jī)或是網(wǎng)絡(luò)不通(這個(gè)原因很多颗品,最簡單的是網(wǎng)線沒有插。還有就是可能會(huì)是網(wǎng)卡down了等)如果是網(wǎng)卡down了ifup相應(yīng)的網(wǎng)卡再試試
提示(2):
# ssh zhou@192.168.***.**
ssh: connect to host 192.168.***.** port 22: Connection refused
這是由于對(duì)方server的ssh服務(wù)沒有開沃缘。這個(gè)server端開啟服務(wù)即可躯枢。
如何開啟ssh服務(wù)呢?
首先確保要登錄的主機(jī)安裝了openssh-client(ubuntu有默認(rèn)安裝槐臀,如果沒有則sudo?apt-get?install?openssh-client)锄蹂,如果要使本機(jī)開放SSH服務(wù)就需要安裝 openssh-server?sudo?apt-get?install?openssh-server
?然后確認(rèn)sshserver是否啟動(dòng)了:
???ps?-e |grep?ssh
如果看到sshd那說明ssh-server已經(jīng)啟動(dòng)了。
如果沒有則可以這樣啟動(dòng):sudo?/etc/init.d/ssh?start
ssh-server配置文件位于/ etc/ssh/sshd_config水慨,在這里可以定義SSH的服務(wù)端口得糜,默認(rèn)端口是22,你可以自己定義成其他端口號(hào)晰洒,如222掀亩。
然后重啟SSH服務(wù):
sudo?/etc/init.d/ssh?stop
sudo?/etc/init.d/ssh?start
然后使用以下方式登陸SSH:
ssh?zhou@192.168.***.** zhou為192.168.***.**機(jī)器上的用戶,需要輸入密碼欢顷。
斷開連接:exit
問題二槽棍、
ssh到server上的時(shí)候密碼是對(duì)的但是報(bào)如下信息:
# ssh 192.168.***.**
root@192.168.***.**'s password:
Permission denied, please try again.
這個(gè)是由于如果不輸入用戶名的時(shí)候默認(rèn)的是root用戶,但是安全期間ssh服務(wù)默認(rèn)沒有開root用戶的ssh權(quán)限
解決方法:
要修改root的ssh權(quán)限抬驴,即修改?/etc/ssh/sshd_config文件中
PermitRootLogin no 改為 PermitRootLogin?yes
問題三
登錄是出現(xiàn)如下提示:
ssh?root@192.168.***.**
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint?for?the RSA key sent by the remote host is
76:fb:b3:70:14:48:19:d6:29:f9:ba:42:46:be:fb:77.
Please contact your system administrator.
Add correct host key?in?/home/fante/.ssh/known_hosts?to get rid of this
message.
Offending key?in?/home/fante/.ssh/known_hosts:68
RSA host key?for?192.168.***.** has changed and you have requested strict checking.
Host key verification failed.
server端密碼或是其他發(fā)生改變的時(shí)候炼七。
解決方法一般就需要?jiǎng)h除~/.ssh/known_hosts的東西,然后再登錄即可布持。