當我們用一台伺服器登入另一台伺服器可直接使用ssh協議進行登陸
具體格式:
ssh [使用者名稱]@[ip] ssh [email protected]也可以直接遠端傳送檔案到另一台伺服器
具體格式:
scp [檔名] [目標伺服器使用者名稱]@[目標伺服器ip] : [目標複製位置]遠端拷貝的命令還有rsync,scp消耗資源少,不會提高多少系統負荷,在這一點上,rsync就遠遠不及它了。rsync比scp會快一點,但當小檔案多的情況下,rsync會導致硬碟i/o非常高,而scp基本不影響系統正常使用。例如:scp test.txt [email protected]:/home
scp -r [資料夾名] [目標伺服器使用者名稱]@[目標伺服器ip] : [目標複製位置]
注意:以上操作方法存在弊端,每次操作都需要輸入目標伺服器的密碼,不適合集群伺服器的批量操作。所以一般我們會用ssh的第二種身份驗證機制:金鑰驗證。
原理:
假設有a和b兩台機器,現在需要a機器免密訪問b機器 如何實現?
第一步:通過非對稱加密演算法rsa在a機器上生成公鑰和私鑰
第二步:將a機器上生成的公鑰追加到b機器上的授權列表(authorized_keys)中
第三步:當a機器去訪問b機器時,a機器攜帶公鑰.b機器通過檢視授權列表中是否有此公鑰,有則開始進行驗證
第四步:b機器隨機生成乙個字串,並用a機器的公鑰對其加密,返回給a機器
第五步:a機器拿到加密的字串,用私鑰進行解密,將解密後的字串返回給b機器
第六步:b機器拿到返回的字串,經對比一致則驗證通過,可以通訊
注意:公鑰是用來加密的,私鑰是用來解密的問題:1、正常a機器遠端登陸b機器需要b機器使用者和密碼,ssh是如何實現的,是否在公鑰裡封裝了使用者和密碼?
不是,密碼驗證和金鑰驗證都是去驗證自己的身份,驗證通過即可建立通訊。
2、a機器通過私鑰解密的字串,傳輸給b機器是明文還是密文,是否有安全問題?
是明文,沒有安全問題,解密的字串是與b機器的字串做比較的,即使別的機器抓取了,也無法比較。
首先在源伺服器上生成公鑰和金鑰:
具體格式:
ssh-keygen -t rsa其中 -t [加密方式] 缺省會在 /root/.ssh/ 生成私鑰和公鑰 id_rsa和id_rsa.pub
如下圖:中間按enter鍵
接下來我們需要將源伺服器生成的公鑰拷貝到目標伺服器中並新增至authorized_keys列表中,這兩步可以使用乙個簡便命令進行執行:
將公鑰新增至目標伺服器的authorized_keys列表中
具體格式:
ssh-copy-id [目標伺服器]如下圖:例如:ssh-copy-id 192.168.88.65
另一種方法,先將公鑰拷貝到目標伺服器上,再將公鑰追加到授權列表中
命令:cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
通過scp將內容寫到對方的檔案中
命令:scp -p ~/.ssh/id_rsa.pub root@:/root/.ssh/authorized_keys
驗證:
進入 ~/.ssh 會生成以下幾個檔案
authorized_keys:存放遠端免密登入的公鑰,主要通過這個檔案記錄多台機器的公鑰
id_rsa : 生成的私鑰檔案
id_rsa.pub : 生成的公鑰檔案
know_hosts : 已知的主機公鑰清單
如果希望ssh公鑰生效需滿足至少下面兩個條件:
1) .ssh目錄的許可權必須是700
2) .ssh/authorized_keys檔案許可權必須是600
ssh 免密登陸
摘要 在本地生成公鑰私鑰對,並將公鑰上傳至 server 端實現免密登陸。1.使用 ssh keygen 生成金鑰 ssh keygen t rsa f filename在生成金鑰對時,會要求輸入 passphrase generating public private rsa key pair.e...
ssh免密登陸
有兩台linux機器 node1 172.16.160.92 node2 172.16.160.91 先在node1 172.16.160.92 這台機器操作 生產金鑰 ssh keygen t rsa p 回車把id rsa.pub追加到授權的key裡面去。cat ssh id rsa.pub s...
SSH免密登陸
建立秘鑰 ssh keygen 傳送秘鑰 ssh copy id ip 登陸ssh ip 在進行ssh登陸的時候依然要輸入密碼的解決方案 是被登入機器的檔案許可權問題 使用者許可權 chmod 700 home hadoop ssh資料夾許可權 chmod 700 home hadoop ssh a...