關(guān)閉ssh使用DNS、秘鑰檢查的配置
一、何為UseDNS? 何為GSSAPIAuthentication?
1. 關(guān)閉UseDNS和GSSAPIAuthentication
UseDNS yse : 服務(wù)器會(huì)先根據(jù)客戶端的 IP地址進(jìn)行 DNS PTR反向查詢出客戶端的主機(jī)名,然后根據(jù)查詢出的客戶端主機(jī)名進(jìn)行DNS正向A記錄查詢,并驗(yàn)證是否與原始 IP地址一致,通過此種措施來防止客戶端欺騙。
GSSAPIAuthentication yes : 基于 GSSAPI 的用戶認(rèn)證,服務(wù)器端默認(rèn)啟用了GSSAPI。登陸的時(shí)候客戶端需要對(duì)服務(wù)器端的IP地址進(jìn)行反解析,如果服務(wù)器的IP地址沒有配置PTR記錄,那么就會(huì)在這里卡住。
2.如何關(guān)閉
echo 'UseDNS no' >>/etc/ssh/sshd_config
sed -i 's/#GSSAPIAuthentication yes/GSSAPIAuthentication no/g' /etc/ssh/sshd_config systemctl restart sshd
二、在用ssh客戶端第一次登錄遠(yuǎn)程Linux的時(shí)候通常會(huì)報(bào)如下的錯(cuò)誤
The authenticity of host 'IP' can't be established. ECDSA key fingerprint is SHA256:+9UZGqPe/Rdaiz9jTg0P5ZtGMl6gVP0i+iPTh8sHwt4. Are you sure you want to continue connecting (yes/no)? Host key verification failed.
在這過程中,即使你選擇了yes,也是連接不上的。
分析
原因在于每次遠(yuǎn)程登錄Linux的時(shí)候,Linux都要檢查一下,當(dāng)前訪問的計(jì)算機(jī)公鑰是不是在~/.ssh/know_hosts中,這個(gè)文件時(shí)OpenSSH記錄的。當(dāng)下次訪問相同計(jì)算機(jī)時(shí),OpenSSH會(huì)核對(duì)公鑰。如果公鑰不同,OpenSSH會(huì)發(fā)出警告,避免你受到DNS Hijack之類的攻擊。SSH對(duì)主機(jī)的public_key的檢查等級(jí)是根據(jù)StrictHostKeyChecking變量來配置的。默認(rèn)情況下,StrictHostKeyChecking=ask。簡單所下它的三種配置值:
1.StrictHostKeyChecking=no
最不安全的級(jí)別,當(dāng)然也沒有那么多煩人的提示了,相對(duì)安全的內(nèi)網(wǎng)測試時(shí)建議使用。如果連接server的key在本地不存在,那么就自動(dòng)添加到文件中(默認(rèn)是known_hosts),并且給出一個(gè)警告。
2.StrictHostKeyChecking=ask #默認(rèn)的級(jí)別,就是出現(xiàn)剛才的提示了。如果連接和key不匹配,給出提示,并拒絕登錄。
3.StrictHostKeyChecking=yes #最安全的級(jí)別,如果連接與key不匹配,就拒絕連接,不會(huì)提示詳細(xì)信息。
解決方法
- 根據(jù)上面的理論,我們用下面的命令登錄就不會(huì)出問題了。
ssh -o StrictHostKeyChecking=no username@10.10.xxx.xx
修改/etc/ssh/ssh_config文件(或$HOME/.ssh/config)中的配置,添加如下兩行配置:
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
之后記得重啟,順便使用在什么環(huán)境下的服務(wù)器考慮一下安全性問題。
sshpass
基本用法?
- ?自動(dòng)輸入密碼?:使用
sshpass -p '密碼' ssh 用戶名@主機(jī)名命令可以自動(dòng)輸入密碼進(jìn)行遠(yuǎn)程連接。 - ?遠(yuǎn)程連接指定端口?:使用
sshpass -p '密碼' -p 端口號(hào) ssh 用戶名@主機(jī)名可以連接到指定端口。 - ?密碼文件讀取?:使用
sshpass -f 密碼文件 ssh 用戶名@主機(jī)名可以從文件中讀取密碼進(jìn)行連接。 - ?執(zhí)行命令?:使用
sshpass -p '密碼' ssh -o StrictHostKeyChecking=no 用戶名@主機(jī)名 '命令'可以在遠(yuǎn)程主機(jī)上執(zhí)行命令,-o StrictHostKeyChecking=no選項(xiàng)可以忽略密碼提示。
安裝方法
- ?使用yum安裝?:在基于RPM的系統(tǒng)中,可以使用
yum install sshpass命令安裝sshpass。 - ?從源代碼安裝?:如果yum安裝不上,可以從SourceForge下載源代碼包,解壓后配置、編譯并安裝。
配置和使用示例
- ?配置別名?:可以在
.bashrc或.zshrc文件中配置sshpass的別名,方便快速連接主機(jī)。 - ?自動(dòng)接受主機(jī)指紋?:使用
ssh-keyscan命令預(yù)先獲取遠(yuǎn)程主機(jī)的指紋,并添加到known_hosts文件中,或者在連接時(shí)使用-o StrictHostKeyChecking=no選項(xiàng)臨時(shí)禁用主機(jī)密鑰檢查。 - ?腳本使用?:可以編寫腳本使用sshpass自動(dòng)化執(zhí)行遠(yuǎn)程操作,例如自動(dòng)上傳文件、執(zhí)行命令等。

浙公網(wǎng)安備 33010602011771號(hào)