1,咱們想經過遠程的方式從個人電腦遠程鏈接到對方的電腦上那麼在LINUX系統下咱們能夠經過一種叫ssh的方式鏈接過去。SSH客戶端(ssh命令)還包含一個頗有用的遠程安全拷貝命令scp。算法
2,有兩種鏈接方式,vim
(1)telnet 這種是明文的容易讓黑客捕獲。安全
應用方式:安裝telnet(遠程登陸的意思)服務器
Yum –y install telnetssh
安裝好後怎麼連接呢?編輯器
如 telnet 192.168.112.356 22 IP是對方IP地址加密
22端口號、rest
固然對方也要安裝telnetip
(2)ssh 是通過加密的。get
3,ssh有兩種級別的鏈接方式
第一種級別(基於口令的安全驗證)
只要你知道本身賬號和口令,就能夠登陸到遠程主機。全部傳輸的數據都會被加密,可是不能保證你正在鏈接的服務器就是你想鏈接的服務器。可能會有別的服務器在冒充真正的服務器,也就是受到「中間人」這種方式的攻擊。第二種級別(基於密匙的安全驗證)
須要依靠祕鑰,也就是你必須爲本身建立一對密匙,並把公用密匙放在須要訪問的服務器上。客戶端軟件就會向服務器發出請求,請求用你的密匙進行安全驗證。服務器收到請求以後,先在該服務器上你的主目錄下尋找你的公用密匙,而後把它和你發送過來的公用密匙進行比較。若是兩個密匙一致,服務器就用公用密匙加密「質詢」(challenge)並把它發送給客戶端軟件。客戶端軟件收到「質詢」以後就能夠用你的私人密匙解密再把它發送給服務器。
總結1,
ssh鏈接第一級別:
ssh鏈接默認端口是22
(1)
有兩臺電腦 A和B. A要登陸 B電腦的超級用戶
#ssh 192.168.29.144 登陸超級用戶IP前不用加@
第一次鏈接 會問你 記錄不記錄對方IP地址, 必須記錄 YES
以後對方密碼彈出 輸入對方的密碼回車
用hostname –I 查看下本機IP地址,這樣就是對方的IP地址對方的主機了。
而後exit退出,就等退出了
(2)
有兩臺電腦 A和B. A要登陸 B電腦的普通用戶 (不是超級用戶)
添加個用戶
如我如今在另外一臺電腦添加用戶
Useradd yunjisuan 建立一個叫yunjisuan 的用戶 路徑時/home 目錄
Echo 「123123」 | passwd - -stdin yunjisuan 給yunjisun 用戶添加密碼。
我如今在第一臺電腦我用ssh鏈接另外一臺電腦的 yunjisuan用戶
A電腦 輸入: ssh yunjisuan@192.168.,29.144 (ip地址前不加東西就是超級用戶)
以後輸入密碼:123123 就登陸進去了
(3)
遠程複製在電腦雙方都要安裝 scp命令
yum insiall openssh-clients (打開ssh客戶端) 安裝scp遠程複製命令
以後怎麼作呢?
1,我在A電腦
映射一句話 到/etc/hosts裏
# echo "'hostname –I' www.yunjisuan.com" >> /etc/hosts
Cat /etc/housts 看一下。 沒問題
再用scp複製,把A的housts目錄複製到B電腦 超級用戶 /root/etc下
#scp /etc/hosts 192.168.29.144:/etc/回車 複製hosts這個目錄過去。
注意:沒加root@192.168.29.1144 就是默認超級用戶登陸。
上B電腦查看 cat /etc/hosts 就有了
2,以上我是把我A電腦的數據複製過。
去接下來。
我要把B電腦的數據拉過來怎麼操做呢?
用#:scp root@192.168.29.144:~/222 .
這是把B電腦的 根下YYY文件複製到我A電腦的 點 當前目錄下。
總結2
ss h鏈接第二級別
祕鑰的意義就在於不用輸密碼,就進入對方的服務端。
1,首先 建立祕鑰對
ssh Tab一下 會發現不少命令
Ssh-Keygen 生成祕鑰對的命令 (交互生成祕鑰)
Ssh-copy-id分發祕鑰對的命令
(1)# Ssh-Keygen 回車
會出來這三樣,第一個…..(/root/.ssh/id_rsa) 這是這個命令 在根下root下 .ssh 點就是隱藏文件。後邊的id_rsa就是祕鑰對的名字 (在這個目錄下生成一個叫id_rsa的文件)
第二個是密碼 直接回車不設就行
第三個也是密碼,直接回車
就建立完了。
(2)#ls .ssh 看一下 有三個文件 分別是
id_rsa 私鑰 id_rsa.pub 公鑰 known_hosts遠程登陸記錄
客戶端拿私鑰 服務端拿公鑰 (就是誰登陸誰 就把公鑰發給誰)
私鑰能夠有不少份,但公鑰只能有一份,私鑰去找公鑰。
(3)我如今在客戶端建立了祕鑰對
如今得把公鑰給服務端複製過去
怎麼操做呢?
首先(1)在服務端家目錄下建立一個 mkdir .ssh 目錄
(2)ll -d .ssh/ 看看他是什麼權限? 爲何看呢?由於你的祕鑰權限過大,Linux系統擔憂安全是不會讓你成功的。
因此你得給它設置下權限(客戶端服務端雙方都要設置700權限)
#:chmod 700 .ssh/ 它權限必須是700
(3)在服務端把公鑰更名vi /etc/ssh/sshd_config
進入編輯器在47行 複製authorized_keys 這個名字
mv id_rsa.pub authorized_keys 改爲這個名字
set nu 顯示行號
或者cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 這樣更名
(5)如今來客戶端把公鑰 複製過去給服務端(或者相反)
#:scp .ssh/authorized_keys 192.168.29.144:~/.ssh/
(6)還有些提升效率的操做。
vim /etc/ssh/sshd_config 後
79行改爲no (centOS6是81行 改爲on) 這是驗證改爲on 不驗了
115行改爲no (centOS6是122行 改爲on) NDS 改爲no
以後重啓一下systemctl restart network
而後scp /etc/ssh/sshd_config root@192.168.29.144:/etc/ssh/
這個sshd_config這個修改後的配置文件給對方發過去。覆蓋對方的配置文件(免得對方改了) 這是ssh的配置文件。
對方也重啓一下systemctl sshd reload
(7)ssh 192.168.29.144 這就無密碼的鏈接上了
結束 這就是祕鑰鏈接 免祕鑰的過程。
可是你連普通用戶照樣還有密碼,除非普通用戶也有公鑰照以上這麼改。
示範一下鏈接普通用戶
前提:要在對方電腦上建立個普通用戶
(1)Useradd yunjisuan 建立一個叫yunjisuan 的用戶 路徑在/home 裏
Echo 「123123」 | passwd –stdin yunjisuan 給yunjisun 用戶添加密碼。
(2)而後進去對方電腦普通用戶下(yunjisuan下)建立
#:mkdir .ssh 目錄
在改.ssh的屬主爲yunjisuan #:chown yujisuan .ssh
權限爲700 #:chown 700 .ssh
#:ll –d .ssh 查看下
(3) 由於普通用戶裏沒有.ssh目錄。全部要把我方的公鑰給複製過去到yunjisuan用戶的超級用戶也就是~家目錄裏
#scp ~/.ssh/authorized_keys yunjisuan@192.168.29.144:~
(4)而後進去對方電腦cd /home/yunjisuan 就有authorized_keys文件了。
在把authorized_keys移到 .ssh裏
mv authorized_keys .ssh
(5)可是這時我進的是普通用戶,普通用戶要能用這文件就要把authorized_keys的屬主改爲普通用戶:
#:chown yujisuan authorized_keys
(6)鏈接ssh yunjisuan@192.168.29.144 就鏈接上了
總結3
ssh 祕鑰鏈接的簡化方式
在客戶端.ssh下 還有個ssh-copy-id 它是用來分發公鑰的剛纔服務端作的那些操做它都能自動來完成。
(1)
一條命令生成祕鑰對。 而不用以前的ssh-Keygen 生成祕鑰對的命令 (交互生成手動分發)
-d dsa 指定加密算法 dsa
-f 指生成的祕鑰放在哪裏
-P 槓大P 「」裏邊沒東西就是空密碼
#ssh-keygen –t dsa –f ~/.ssh/id_dsa –P 「」 回車
(2)一條命令分發
我如今要分發
-i 你要分發什麼?(要分發這個~/.ssh/id_dsa.pub公鑰)
ssh-copy-id –i ~/.ssh/id_dsa.pub yunjisuan@192.168.29.144
如今進入服務端 家目錄下/home
Ls –a 看一下 yunjisuan
最後一行多了一個700權限屬主屬組都是yungjisuan(直接就把權限改了)
回車後再看下.ssh裏邊公鑰在不在。
以後用客戶端直接鏈接服務端。能夠了
(3) 可是以上步驟分發祕鑰時還須要輸入密碼。 怎麼把這個密碼也刪掉呢?
有個命令叫sshpass 須要雲yum安裝本地yum沒有
sshpass –p 「123123」 輸入密碼以後再分發。
#sshpass –p 「123123」 ssh-copy-id –i ~/.ssh/id_dsa.pub yunjisuan@192.168.29.144
以後登錄OK了
(4)cd .ssh回車
Ls裏有個這個目錄 known_hosts
這是記錄來訪的IP 若是要清空了,再去登錄對方還要輸入密碼
清理方法是[.ssh] # > know_hosts
怎麼作我在清空known_hosts後,在鏈接對方,還能免密的鏈接上呢?
須要再加幾個參數:
–o StrictHostKeyChecking=no
#sshpass –p 「123123」 ssh-copy-id –i ~/.ssh/id_dsa.pub 「–o StrictHostKeyChecking=no yunjisuan@192.168.29.144」 回車
(5)在鏈接就能夠了 結束