构建SSH服务
什么是SSH?
簡(jiǎn)單說(shuō),SSH是一種網(wǎng)絡(luò)協(xié)議,用于計(jì)算機(jī)之間的加密登錄。如果一個(gè)用戶從本地計(jì)算機(jī),使用SSH協(xié)議登錄另一臺(tái)遠(yuǎn)程計(jì)算機(jī),我們就可以認(rèn)為,這種登錄是安全的,即使被中途截獲,密碼也不會(huì)泄露。最早的時(shí)候,互聯(lián)網(wǎng)通信都是明文通信,一旦被截獲,內(nèi)容就暴露無(wú)疑。1995年,芬蘭學(xué)者Tatu Ylonen設(shè)計(jì)了SSH協(xié)議,將登錄信息全部加密,成為互聯(lián)網(wǎng)安全的一個(gè)基本解決方案,迅速在全世界獲得推廣,目前已經(jīng)成為L(zhǎng)inux系統(tǒng)的標(biāo)準(zhǔn)配置。
SSH只是一種協(xié)議,存在多種實(shí)現(xiàn),既有商業(yè)實(shí)現(xiàn),也有開(kāi)源實(shí)現(xiàn)。本文針對(duì)的實(shí)現(xiàn)是OpenSSH,它是自由軟件,應(yīng)用非常廣泛。這里只討論SSH在Linux Shell中的用法。如果要在Windows系統(tǒng)中使用SSH,會(huì)用到另一種軟件PuTTY,這需要另文介紹。
中間人攻擊
SSH之所以能夠保證安全,原因在于它采用了公鑰加密。
整個(gè)過(guò)程是這樣的:(1)遠(yuǎn)程主機(jī)收到用戶的登錄請(qǐng)求,把自己的公鑰發(fā)給用戶。(2)用戶使用這個(gè)公鑰,將登錄密碼加密后,發(fā)送回來(lái)。(3)遠(yuǎn)程主機(jī)用自己的私鑰,解密登錄密碼,如果密碼正確,就同意用戶登錄。
這個(gè)過(guò)程本身是安全的,但是實(shí)施的時(shí)候存在一個(gè)風(fēng)險(xiǎn):如果有人截獲了登錄請(qǐng)求,然后冒充遠(yuǎn)程主機(jī),將偽造的公鑰發(fā)給用戶,那么用戶很難辨別真?zhèn)巍R驗(yàn)椴幌駂ttps協(xié)議,SSH協(xié)議的公鑰是沒(méi)有證書(shū)中心(CA)公證的,也就是說(shuō),都是自己簽發(fā)的。
可以設(shè)想,如果攻擊者插在用戶與遠(yuǎn)程主機(jī)之間(比如在公共的wifi區(qū)域),用偽造的公鑰,獲取用戶的登錄密碼。再用這個(gè)密碼登錄遠(yuǎn)程主機(jī),那么SSH的安全機(jī)制就蕩然無(wú)存了。這種風(fēng)險(xiǎn)就是著名的"中間人攻擊
構(gòu)建SSH遠(yuǎn)程管理
---------SSH服務(wù)器-------------Client---------
192.168.1.1 192.168.1.100
一、密碼驗(yàn)證
root@localhost ~]# vi /etc/ssh/sshd_config 修改:
Port 22
Protocol 2
ListenAddress 192.168.1.1
UseDNS no
PermitRootLogin no
PermitEmptyPasswords no
LoginGraceTime 2m
MaxAuthTries 6
AllowUsers hehe xixi@192.168.1.100 客戶端驗(yàn)證:
[root@localhost ~]# ssh 192.168.1.1
[root@localhost ~]# ssh hehe@192.168.1.1
[root@localhost ~]# ssh haha@192.168.1.1
[root@localhost ~]# ssh xixi@192.168.1.1
二、秘鑰對(duì)驗(yàn)證
例如:
ssh-keygen -b 4096 -t dsa
客戶端:
[root@localhost ~]#ssh-keygen
[root@localhost ~]#ssh-copy-id -i /home/hehe/.ssh/id_rsa.pub root@192.168.1.1
注意:ssh-copy-id:把密鑰追加到遠(yuǎn)程主機(jī)的 .ssh/authorized_key 上
[root@localhost ~]#ssh root@192.168.1.1
或者
[hehe@localhost .ssh]$ ssh-keygen
[hehe@localhost .ssh]$ scp id_rsa.pub root@192.168.1.1:/root/
注意:在上傳公鑰時(shí),不要關(guān)閉密碼驗(yàn)證,否則將無(wú)法上傳。
服務(wù)器端:
[root@localhost ~]# vim /etc/ssh/sshd_config
修改:
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
[root@localhost ~]#cp /root/id_rsa.pub /root/.ssh/authorized_keys
增加其他用戶
[root@localhost ~]#cat id_rsa.pub >> .ssh/authorized_keys
[root@localhost ~]# service sshd restart
客戶端驗(yàn)證:
[hehe@localhost .ssh]$ ssh root@192.168.1.1 結(jié)論:不使用密碼。而是使用秘鑰對(duì)驗(yàn)證登錄。
思考:如果客戶端lisi用戶,把公鑰拷貝到了服務(wù)端han用戶下。將會(huì)怎么樣?
(lisi用戶ssh han@192.168.56.200時(shí)無(wú)需密碼)
結(jié)論希望哪個(gè)用戶免密碼就拷貝到哪個(gè)用戶。
-----------------------------------
遠(yuǎn)程執(zhí)行命令:ssh root@192.168.56.200 date
-----------------------------------
講解scp命令
1、本地--->>>---服務(wù)器(類似上傳)
文件:
[root@localhost ~]# scp 222.txt root@192.168.1.1:/root
目錄:
[root@localhost ~]# scp -r /root/hehe root@192.168.1.1:/root
2、服務(wù)器--->>>---本地(類似下載)
文件:
[root@localhost ~]# scp root@192.168.1.1:/root/222.txt ./
目錄:
[root@localhost ~]# scp -r root@192.168.1.1:/root/hehe ./
---------------------------------------------------------------------------------------
1. ssh命令用法
連接到遠(yuǎn)程主機(jī)
# ssh root@192.168.1.120 // 默認(rèn)連接到目標(biāo)主機(jī)的tcp 22端口
連接到其他ssh端口
# ssh -p 10022 root@192.168.1.120
連接到遠(yuǎn)程主機(jī),并執(zhí)行一條命令
# ssh root@192.168.1.120 ls -l
在ssh命令后面,直接加上在遠(yuǎn)程主機(jī)上要執(zhí)行的命令。
打開(kāi)調(diào)試模式
# ssh -v root@192.168.1.120
-v參數(shù)追蹤調(diào)試建立的SSH連接,可以看到在哪個(gè)環(huán)節(jié)出了問(wèn)題。
對(duì)所有數(shù)據(jù)請(qǐng)求壓縮
# ssh -C root@192.168.1.120
所有通過(guò)ssh發(fā)送或接收的數(shù)據(jù)將會(huì)被壓縮,并且仍然是加密的。
指定ssh源地址
如果你的ssh客戶端有多于兩個(gè)以上的IP地址,可以使用-b選項(xiàng)來(lái)指定一個(gè)IP地址。這個(gè)IP將會(huì)被用做建立連接的源地址。
# ssh -b 192.168.0.200 root@192.168.1.120
查看是否已經(jīng)添加了對(duì)應(yīng)主機(jī)的ssh密鑰
# ssh-keygen -F 192.168.1.120
刪除對(duì)應(yīng)主機(jī)的ssh訪問(wèn)密鑰
# ssh-keygen -R 192.168.1.120
也可以在主機(jī)的~/.ssh/known_hosts文件中手動(dòng)刪除公鑰。
轉(zhuǎn)載于:https://www.cnblogs.com/luoyan01/p/9733656.html
總結(jié)
- 上一篇: 我的博客园css样式
- 下一篇: 网络的可靠性nyoj170