1、遠(yuǎn)程連接服務(wù)器
遠(yuǎn)程連接服務(wù)器對(duì)于管理員來(lái)說(shuō)挠阁,是一個(gè)很有用的操作宾肺。它使得對(duì)服務(wù)器的管理更為方便溯饵。不過(guò)方便歸方便,但開(kāi)放的讓全世界都可以嘗試連接你的主機(jī)并不是什么好事锨用,因?yàn)榭赡軙?huì)有安全性問(wèn)題丰刊。
1.1、什么是遠(yuǎn)程連接服務(wù)器
遠(yuǎn)程連接服務(wù)器通過(guò)文字或圖形接口的方式來(lái)遠(yuǎn)程登錄系統(tǒng)增拥,讓你在遠(yuǎn)程的終端前面登錄Linux主機(jī)已取得可操作主機(jī)的接口(Shell)啄巧,而登陸后的操作感覺(jué)上就像坐在系統(tǒng)前面一樣!
用 SSH/Telnet/VNC 等方式取得的文字或者圖形 Shell 能夠進(jìn)行很多系統(tǒng)管理的任務(wù)掌栅,與單純的 FTP 能進(jìn)行的工作當(dāng)然不同秩仆。
遠(yuǎn)程連接服務(wù)器的功能:
1、分享 Unix-Like 主機(jī)的運(yùn)算能力猾封;
2澄耍、服務(wù)器類型(Server),有限度的開(kāi)放連接晌缘;
3齐莲、工作站類型(Workstation),只對(duì)內(nèi)網(wǎng)開(kāi)放磷箕;
1.2选酗、有哪些可供登錄的類型
文字接口和圖形接口,明文傳輸和加密傳輸
文字接口明文傳輸:Telnet岳枷、RSH芒填,目前已少用;
文字接口加密:SSH為主嫩舟;
圖形接口:XDMCP氢烘、VNC怀偷、XRDP等
2家厌、SSH服務(wù)器
SSH(Secure Shell Protocol),它可以通過(guò)數(shù)據(jù)包加密技術(shù)將等待傳輸?shù)臄?shù)據(jù)包加密后在傳輸?shù)骄W(wǎng)絡(luò)上椎工,因此數(shù)據(jù)信息就比較安全饭于。
在默認(rèn)狀態(tài)下,SSH協(xié)議本身提供兩個(gè)服務(wù)器功能维蒙。
一個(gè)是類似 Telnet 的遠(yuǎn)程連接使用 Shell 的服務(wù)器掰吕,即俗稱的SSH;
另一個(gè)就是類似 FTP 服務(wù)的 Sftp-Server颅痊,提供更安全的 FTP 服務(wù)
2.1殖熟、連接加密技術(shù)
目前常見(jiàn)的數(shù)據(jù)包加密技術(shù)通常是所謂的 ?“非對(duì)稱密鑰系統(tǒng)” 來(lái)處理的。主要是通過(guò)兩把不一樣的公鑰(Public)和私鑰(Private)來(lái)進(jìn)行加密與解密的過(guò)程斑响。由于這兩把鑰匙的作用是提供數(shù)據(jù)加解密的菱属,所以在同一個(gè)方向的連接中钳榨,這把鑰匙當(dāng)然是需要成對(duì)的。
公鑰(Public Key):提供給遠(yuǎn)程主機(jī)進(jìn)行數(shù)據(jù)加密行為纽门,也就是說(shuō)大家都能取得你的公鑰來(lái)將數(shù)據(jù)加密薛耻;
私鑰(Private Key):遠(yuǎn)程主機(jī)使用你的公鑰加密的數(shù)據(jù),在本地端就只能使用來(lái)進(jìn)行解密赏陵。由于私鑰很重要饼齿,因此私鑰是不能夠外流的,只能保護(hù)在自己的主機(jī)上蝙搔。
由于每臺(tái)主機(jī)都應(yīng)該有自己的密鑰(公鑰與私鑰)缕溉,且公鑰用來(lái)加密而私鑰用來(lái)解密,其中私鑰不可外流杂瘸,但因?yàn)榫W(wǎng)絡(luò)是雙向的倒淫,所以,每個(gè)人應(yīng)該都要有對(duì)方的“公鑰”才對(duì)败玉!
1敌土、服務(wù)器建立公鑰文件;2运翼、客戶端主動(dòng)連接要求返干;
3、服務(wù)器傳送公鑰給客戶端血淌;
4矩欠、客戶端記錄/對(duì)比服務(wù)器的公鑰數(shù)據(jù)及計(jì)算自己的公私鑰;(客戶端的密鑰是隨機(jī)運(yùn)算產(chǎn)生于本次連接當(dāng)中的悠夯,所以這次的連接與下次的連接密鑰可能會(huì)不一樣啦癌淮!此外客戶端的用戶主目錄下:~/.ssh/know_hosts 中會(huì)記錄曾經(jīng)連接過(guò)的主機(jī)的 Public Key,用于確認(rèn)·我們自己已經(jīng)連接上正確的服務(wù)器沦补。如果想要產(chǎn)生新的密鑰則 rm ?/etc/ssh/ssh_host*
5乳蓄、返回客戶端的公鑰數(shù)據(jù)到服務(wù)器;
6夕膀、服務(wù)器接受私鑰開(kāi)始雙向加解密虚倒。
2.2、啟動(dòng)SSH服務(wù)
SSHD可以同時(shí)提供Shell和FTP产舞,而且都是架構(gòu)在 Port 22 上面的
2.3魂奥、SSH客戶端連接程序 —— Linux用戶
2.3.1、SSH:直接登錄遠(yuǎn)程主機(jī)的指令
如果不填寫(xiě)賬號(hào)的話易猫,那么會(huì)以本地端計(jì)算機(jī)的賬號(hào)來(lái)嘗試登陸遠(yuǎn)程耻煤。
ssh ?192.168.1.1
ssh ?hahaha@192.168.1.1
ssh ?-f ?hahaha@192.168.1.1 ?shutdown -h ?now
2.3.2、服務(wù)器公鑰記錄文件:~/.ssh/known_hosts
當(dāng)你登錄遠(yuǎn)程服務(wù)器時(shí),本機(jī)會(huì)主動(dòng)接收到服務(wù)器的Public Key去比對(duì) ~/.ssh/known_hosts有無(wú)相關(guān)公鑰哈蝇。
2.3.3嘴办、模擬FTP的文件傳輸方式:SFTP
SSH是登錄遠(yuǎn)程服務(wù)器進(jìn)行工作,那如果你只是想要從遠(yuǎn)程服務(wù)器下載或者上傳文件呢买鸽?那就不使用SSH啦涧郊,而必須使用SFTP或SCP。這兩個(gè)指令都是使用SSH的通道(port :22)眼五,只是模擬成FTP與復(fù)制的操作而已妆艘。
sftp ?student@192.168.1.1
2.3.4、文件異地直接復(fù)制:SCP
通常使用SFTP是因?yàn)榭赡懿恢婪?wù)器上面已存在的文件名信息看幼,如果已經(jīng)知道服務(wù)器上的文件名批旺,那么最簡(jiǎn)單快捷的方式是使用SCP這個(gè)命令。
scp ?/home/aaa/test.txt ?zhang@192.168.1.1:/home/zhang
scp ?zhang@192.168.1.1:/home/zhang/AAA.txt ?/home/aaa/
3诵姜、SSHD服務(wù)器詳細(xì)配置
基本上汽煮,所有的SSHD服務(wù)器的詳細(xì)配置都放置在 /etc/ssh/sshd_config 配置文件中。同時(shí)請(qǐng)注意棚唆,配置文件里只要未被修改的值即為默認(rèn)值暇赤,你可以依據(jù)它來(lái)修改。建議取消root登錄并將SSH版本設(shè)定為2.
vim ?/etc/ssh/sshd_config
將遠(yuǎn)程連接禁止root登錄:
#PermitRootLogin ?yes ? ?改為 ? ?PermitRootLogin ? ?no宵凌;
#Protocol 2
SSH限制被嘗試次數(shù):
MaxAuthTries ?6鞋囊;
在限定的次數(shù)里面密碼認(rèn)證失敗的話將會(huì)被強(qiáng)制斷開(kāi)連接。
關(guān)閉UseDNS加速SSH登錄:
經(jīng)常登錄SSH的朋友可以感覺(jué)出瞎惫,每次登錄SSH時(shí)總是要停頓一下才能連接上溜腐,這是因?yàn)镺penSSH服務(wù)器有一個(gè)DNS查找選項(xiàng)UseDNS在默認(rèn)情況下是打開(kāi)的;
UseDNS選項(xiàng)打開(kāi)的狀態(tài)下瓜喇,當(dāng)客戶端試圖登錄SSH服務(wù)器時(shí)挺益,服務(wù)器端先根據(jù)客戶端的IP地址進(jìn)行DNS PTR反向查詢客戶端主機(jī)名,然后根據(jù)查詢出的客戶端主機(jī)名進(jìn)行DNS正向A記錄查詢乘寒,驗(yàn)證與其原始IP地址是否一致望众,這是防止客戶端欺騙的一種措施,但一般我們的IP不會(huì)有PTR記錄肃续,打開(kāi)這個(gè)選項(xiàng)不過(guò)是在白白浪費(fèi)時(shí)間而已黍檩,不如將其關(guān)閉叉袍。
UseDNS no始锚;
SSH限制IP登錄幾種方法:
1、修改 etc/hosts.allow 和 etc/hosts.deny 文件喳逛;
2瞧捌、修改 /etc/ssh/sshd_config 文件,加入 Allowusers:用戶名@IP(只允許某用戶從哪個(gè)Ip登錄)。
?Allowusers *@192.168.1.111?
PermissionRootLogin no
#這兩者可以保證只能從你允許的IP登錄你的服務(wù)器姐呐;
4殿怜、制作不用密碼可立即登錄的SSH用戶
利用Key不輸入密碼遠(yuǎn)程連接主機(jī),具體流程
1曙砂、客戶端建立兩把鑰匙:利用命令為 ssh-keygen头谜;
2、客戶端放置好私鑰文件:將 Private Key 放在用戶主目錄內(nèi)的 .ssh/ 里面即可鸠澈,“.ssh”文件夾權(quán)限為700柱告,私鑰權(quán)限為600且屬于用戶自己,否則在未來(lái)密鑰對(duì)比的過(guò)程中將出現(xiàn)問(wèn)題笑陈。
3际度、將公鑰放置到服務(wù)器端中:將 Public Key 放置在你想要用來(lái)登錄的那個(gè)用戶的主目錄內(nèi)的 .ssh/authorized_keys文件里,也可以用追加的方式寫(xiě)入涵妥。
ssh-keygen ?[ -t ?rsa | dsa ]乖菱,之后會(huì)生成公鑰和私鑰;
將公鑰上傳到需要遠(yuǎn)程連接的服務(wù)器上:
scp ?~/.ssh/id_rsa.pub ?zhang@192.168.203.129:~蓬网;
cat ?id_rsa.pub ?>> .ssh/authorized_keys窒所;將公鑰寫(xiě)入
.ssh 目錄的權(quán)限是700,authorized_keys權(quán)限是644
步驟關(guān)鍵:
Client必須制作出Public和Private這兩把Key帆锋,且Private Key需要放到 ~/.ssh/ 內(nèi)墩新;
Server必須要有Public Key,且放置到用戶主目錄下的 ~/.ssh/authorized_keys窟坐,同時(shí)目錄的權(quán)限(.ssh)必須是700而文件權(quán)限必須是644海渊,同時(shí)文件的屬主和屬組都必須與該賬號(hào)吻合才行。
當(dāng)你還想要登錄其他遠(yuǎn)程主機(jī)時(shí)哲鸳,只要將你的Public Key(id_rsa.pub)文件copy到其他主機(jī)上去臣疑,并且將內(nèi)容添加到 ~/.ssh/authorized_keys中即可。
5徙菠、簡(jiǎn)易安全設(shè)置
SSHD 所謂的安全其實(shí)指的是SSHD的數(shù)據(jù)是加密過(guò)的讯沈,所以它的數(shù)據(jù)在Internet上面?zhèn)鬟f時(shí)是比較安全的。至于SSHD這個(gè)服務(wù)本身就不是那樣安全了婿奔。所以如果要將SSHD對(duì)Internet開(kāi)放可登錄的權(quán)限的話缺狠,那么,就盡量局限在幾個(gè)小范圍內(nèi)的IP或主機(jī)名(如你們公司的出口IP)萍摊,這很重要挤茄。
1、服務(wù)器軟件本身的設(shè)置強(qiáng)化:/etc/ssh/sshd_config冰木,禁止root登錄穷劈,禁止某個(gè)用戶登錄笼恰,禁止某個(gè)用戶組登錄;
2歇终、/etc/hosts.allow 和 /etc/hosts.deny
hosts.allow--->sshd :127.0.0.1 192.168.0.0/255.255.0.0
hosts.deny--->sshd:ALL
3社证、iptables數(shù)據(jù)包過(guò)濾防火墻
6、SSH服務(wù)器的高級(jí)應(yīng)用
6.1评凝、在非標(biāo)準(zhǔn)端口啟動(dòng)SSH(默認(rèn)端口:22)
vi ?/etc/ssh/sshd_config
# Port 22(這是默認(rèn)信息)----> Port 23(修改為23端口追葡,但一定要注意,不要將端口開(kāi)在某些周知的端口上奕短,如80那些)
或者兩端口共存辽俗,即sshd監(jiān)聽(tīng)這兩個(gè)端口:
Port ?22
Port ?23
非標(biāo)準(zhǔn)端口連接:
ssh ?-p ?23 ?zhang@192.168.209.129
6.2、以 rsync 進(jìn)行同步鏡像備份
rsync 是一個(gè)相當(dāng)棒的異地備份系統(tǒng)的指令篡诽,可以達(dá)到類似鏡像(mirror)的功能
rsync 第一次備份的時(shí)候需要花費(fèi)比較長(zhǎng)的時(shí)間崖飘,因?yàn)槭状我獋浞菟械奈募5窃俅蝹浞菸募臅r(shí)候杈女,僅會(huì)復(fù)制有差異的數(shù)據(jù)朱浴。這個(gè)很重要的哈!
因?yàn)?rsync ?是通過(guò) SSH 來(lái)傳輸數(shù)據(jù)的达椰,所以你可以針對(duì) 某個(gè)用戶制作出免密碼登錄的SSH密鑰翰蠢!如此一來(lái),往后異地備份系統(tǒng)就能夠自動(dòng)地以 crontab 來(lái)進(jìn)行備份了啰劲。
rsync ?的三種傳輸方式:
1梁沧、在本機(jī)上直接運(yùn)行,用法幾乎與 cp 一模一樣蝇裤,例如:
rsync ?-av ?/etc ?/tmp ?將/etc/ 的數(shù)據(jù)備份到 /tmp/etc 內(nèi)
2廷支、通過(guò) rsh 或 ssh 的信道在Server / Client 之間進(jìn)行傳輸數(shù)據(jù),例如:
rsync -avz user@ip:/test /test #先做無(wú)秘鑰就可直接使用了
#rsync ?-av ?-e ?ssh ?user@ip:/etc ?/tmp ?將遠(yuǎn)程Server的/etc 數(shù)據(jù)備份到本地 /tmp/etc
3栓辜、直接通過(guò) rsync ?提供的服務(wù)(daemon)來(lái)傳輸恋拍,此時(shí) rsync ?主機(jī)需要啟動(dòng) 873 Port
你必須要在Server端啟動(dòng) rsync,看 /etc/xinetd.d/rsync藕甩;
你必須編輯 /etc/rsyncd.conf 配置文件施敢;
你必須設(shè)置定義Client端連接的密碼數(shù)據(jù);
在 Client端可以利用: rsync ?-av ?user@hostname::/dir/path ?/local/path ?注意是兩個(gè)冒號(hào)
6.3狭莱、通過(guò)SSH通道加密原本無(wú)加密的服務(wù)
重點(diǎn)回顧:
遠(yuǎn)程連接服務(wù)器可以讓用戶在任何一臺(tái)計(jì)算機(jī)登錄主機(jī)僵娃,以便使用主機(jī)的資源來(lái)管理與維護(hù)主機(jī);
Telnet與RSH都是以明文方式傳輸數(shù)據(jù)腋妙,當(dāng)數(shù)據(jù)在Internet上面?zhèn)鬏敃r(shí)較不安全默怨;
SSH由于使用密鑰系統(tǒng),因此數(shù)據(jù)在Internet上傳輸時(shí)時(shí)加密過(guò)的辉阶,所以比較安全先壕;
但SSH還是屬于比較危險(xiǎn)的服務(wù),請(qǐng)不要對(duì)整個(gè)Internet開(kāi)放SSH的可登錄權(quán)限谆甜,可利用iptables 規(guī)范可登錄的范圍垃僚;
SSH的Public Key 放在服務(wù)器端,而Private Key 放在Client端规辱;
使用SSH時(shí)谆棺,盡量使用類似E-mail的方式來(lái)登錄,即:ssh ?username@hostname罕袋;
Client端可以比對(duì)Server傳來(lái)的Public Key的一致性改淑,利用的文件為 ~user/.ssh/known_hosts;
SSH的Client端軟件提供SSH浴讯、SCP朵夏、SFTP等程序;
制作不需要密碼的SSH賬號(hào)時(shí)榆纽,可利用ssh-keygen ?-t ?rsa 來(lái)生成Public Key和Private Key仰猖;
上述指令所生成的Public Key必須要上傳到Server的 ~user/.ssh/authorized_keys;
rsync ?可通過(guò)SSH 的服通道或 rsync ?--daemon 的方式來(lái)連接傳輸奈籽,其主要功能可以通過(guò)類似鏡像備份來(lái)僅備份新的數(shù)據(jù)饥侵,因此傳輸數(shù)據(jù)相當(dāng)快。