一、什么是SSH。
SSH(Secure Shell)是我們在使用終端登錄Linux時,所使用的傳輸協議。這個是一種加密的傳輸方式,可以將我們要發送給Linux端的信息進行加密傳輸,是一種安全且可靠傳輸方式。
二、工作模式。
先明白兩個東西:公鑰;私鑰。
公鑰:將數據信息進行加密的“工具”。可以理解為鎖。
私鑰:將加密的數據新建進行解密的“工具”。可以理解為鑰匙。
公鑰是公開的,私鑰是不公開的。
1、用戶名、密碼登錄方式。
2、密鑰對登錄方式。
相比起用戶名與密碼登錄方式,這個方法更加安全。當配置完成后,不再需要用戶/密碼的方式進行驗證。直接使用公鑰與私鑰進行驗證。且連接是雙向的(一端既可以是服務端也可以是客戶端)。
三、配置過程。
1、配置虛擬機IP地址與主機名。
網絡可以修改文件/etc/sysconfig/network-scripts/ifcfg-ens33。
主機名可以使用(hostnamectl set-hostname 主機名)命令修改。修改完成重啟即可。
2、修改/etc/hosts配置文件。
node1與node2兩台的這個配置文件都這樣配置。這樣可以將node1與node2作為域名使用。
3、創建公鑰。
ssh-keygen -t rsa
-t 選擇加密類型rsa\dsa,一般選擇rsa
-b 指定加密長度(最少2048位,默認2048位)
輸入執行命令后,一直回車,結束之后會自動生成一個.ssh目錄,里面存放着本端的公鑰(.pub)與私鑰(.rsa)。
4、將公鑰交於對端。
ssh-copy-id 用戶名@IP地址 (用戶名是用來登錄服務端的用戶名,默認root。)
輸入執行命令后,會自動將node2的IP地址解析出(通過/etc/hosts文件),然后詢問是否繼續連接,輸入yes。因為目前這個狀態還未完成配置,所以連接node2需要node2的root密碼進行驗證。
5、雙向驗證。
完成后,在node2中的.ssh中會存在上圖所示的文件。這樣node1使用ssh登錄node2時,不在需要密碼。
三、ssh的一些配置(修改/etc/ssh/sshd_config,完成之后再重啟服務)
1、默認端口
在ssh服務中,默認的端口是22。可以通過修改配置文件改變ssh的服務端口。
將注釋去掉,修改22(范圍1-65535),推薦修改8000+以上的端口。
ssh -p 端口號 IP地址
2、限制連接的網卡
在正常工作中,一個服務器會存在多個網卡。比如一個網卡連接互聯網,一個網卡連接內網,而連接互聯網網卡並不安全,所以可以限制只能從內網網卡進行ssh登錄。
去掉注釋。修改0.0.0.0,它默認是所以地址,修改為內網網卡的IP地址。這樣就只能通過內網網卡進行ssh登錄。
3、禁用密碼登錄。
上面記錄了使用密鑰對進行ssh登錄。這樣配置完成后,存在兩種登錄方式(密碼登錄與密鑰對登錄)。可以將密碼登錄禁止,只使用密鑰對登錄,保證服務器密碼安全。
將“yes”修改為“no”。
4、禁用root遠程登錄
root用戶權限比較大,遠程登錄不安全。
去掉注釋,將“yes”修改為“no”。
四、ssh的擴展
1、scp(secure copy)
scp 用戶名@IP地址:絕對路徑/文件 目錄路徑 (將服務端的文件拷貝到本地)
scp 目錄路徑/文件 用戶名@IP地址:絕對路徑 (將本地的文件拷貝到服務端)
scp -P 端口號 (指定ssh的端口號)
2、SFTP
sftp 用戶名@IP地址 (登錄服務端)
sftp -oPort=端口號 用戶名@IP地址 (指定端口號登錄服務端)
操作方法與ftp服務基本一樣。幾處不同:
a、SFTP傳輸過程會建立安全通道,傳輸過程更穩定。
b、SFTP使用的是加密傳輸協議,傳輸過程更加安全。
c、FTP使用TCP / IP協議。而SFTP是SSH協議的一部分,它是一種遠程登錄信息。
d、FTP使用21端口建立連接,20端口傳輸數據。SFTP通過22端口建立連接傳輸數據。