ssh 是 Secure Shell 的縮寫,是一個創建在應用層上的安全遠程管理協議。ssh 是目前較爲可靠的傳輸協議,專爲遠程登陸會話和其餘網絡服務提供安全性。利用 ssh 協議能夠有效防止遠程管理過程當中的信息泄露問題。 ssh可用於大多數UNIX和類UNIX操做系統中,可以實現字符界面的遠程登陸管理,它默認使用22端口,採用密文的形式在網絡中傳輸數據,相對於經過明文傳輸的Telnet協議,具備更高的安全性。linux
ssh 提供了基於帳戶密碼(口令)和密鑰對兩種登陸驗證方式,這二者都是經過密文傳輸數據的。shell
ssh 用戶名@IP地址
準備好兩臺Linux操做系統的主機,且將其主機名更改成不一樣,便於後面的密鑰對登陸。
centos6 更改主機名vim
[root@centos ~]# vim /etc/sysconfig/network HOSTNAME=centos-11
臨時關閉防禦功能:windows
iptables -F #清空防火牆規則 setenforce 0 #臨時關閉SELinux
永久關閉防禦功能:centos
chkconfig iptables off #設置防火牆開機不自啓動 sed -i ‘7s/enforcing/disabled/’ /etc/selinux/config #永久關閉SELinux #注意:以上兩條命令執行後,須要重啓服務器才能生效
一、客戶端生成密鑰對文件 ssh-keygen -t rsa -b 2048
-t 指定加密類型(rsa/dsa等)
-b 指定密鑰對加密長度
詢問1:執行過程當中會詢問保存位置,通常默認保存在當前用戶家目錄下的.ssh/目錄下
詢問2:是否對密鑰文件進行加密
加密:若加密,則在調用密鑰文件時須要先驗證密鑰的密碼,密碼正確才能使用密鑰文件
不加密:若不加密,則密鑰文件能夠直接被調用,整個登陸驗證過程無需輸入任何密碼,即爲免密登陸安全
[root@centos-11 ~]# ssh-keygen -t rsa -b 2048
二、將公鑰文件上傳至服務器端 ssh-copy-id 用戶名@服務器IP地址服務器
[root@centos-11 ~]# ssh-copy-id root@10.10.10.12 #該用戶名和要用來登陸服務器的用戶名一致
三、客戶端嘗試登陸服務器 ssh 用戶名@服務器IP地址網絡
[root@centos-11 ~]# ssh root@10.10.10.12 Last login: Fri Dec 20 20:41:00 2019 from 10.10.10.1 #密鑰對驗證優先級大於帳戶密碼驗證
因爲Windows不能直接生成密鑰對,因此須要藉助工具。我使用的是xshell
一、使用Xshell自帶的密鑰對生成嚮導生成密鑰對
一直下一步,其中有一步是,設置密碼爲本地私鑰。看狀況進行選擇。最後一步複製公鑰無需保存。
app
二、將公鑰導入Linux主機的指定用戶下的指定公鑰配置文件內 後面用哪一個用戶登陸就放在誰的用戶家目錄下,找到 .ssh 目錄,而後在裏面建立 authorized_keys 文件,而且將公鑰寫入。ssh
[root@centos-12 ~]# vim .ssh/authorized_keys #粘貼你剛纔複製的公鑰信息,另起一行
三、使用windows嘗試登陸指定用戶
root 在系統中是一個能夠隨心所欲的角色,咱們能夠在平時的操做中用普通用戶操做,在有須要修改一些系統設置的時候再從普通用戶切換到 root 用戶,這樣能夠最大限度的避免由於誤操做而對系統形成破壞,同時也能夠避免黑客在暴力破解後直接使用 root 用戶登陸系統,通常在遠程登陸管理上咱們會禁止直接使用 root 用戶登陸。
配置文件:/etc/ssh/sshd_config 選項: PermitRootLogin no
配置文件:/etc/ssh/sshd_config Port 55235 linux 主機登陸 ssh -p 55235 root@10.10.10.12 xshell 登陸 ssh root@10.10.10.12:55235
scp是secure copy的簡寫,用於在Linux下進行遠程拷貝文件的命令,相似於命令有cp,scp傳輸是加密的,因此可能會稍微影響一點速度。另外,scp還很是不佔資源,不會提升多少系統負荷。
格式: scp 本地文件 用戶名@服務器IP:目錄 scp test.txt root@10.10.10.12:/tmp -P 端口 #若端口不是默認22,則須要使用此格式指定端口
sftp是Secure FileTransferProtocol的縮寫,安全文件傳送協議。sftp與ftp有着幾乎同樣的語法和功能。因爲這種傳輸方式使用了加密/解密技術,因此sftp比ftp更安全一些,但傳輸效率比普通的FTP要低得多.
格式: sftp 用戶名@服務器IP -oPort=端口 #若端口不是默認22,則須要使用此格式指定端口 交互命令: help:查看在交互模式下支持哪些命令 pwd/lpwd:pwd是查看服務器所在路徑;lpwd是查看客戶端所在路徑 ls/lls:ls是查看服務器當前目錄下的文件列表;lls是查看客戶機當前所在路徑的全部文件列表 put:將客戶機中的指定文件上傳到服務器端 get:將服務器端的指定文件下載到客戶機的當前所在目錄 rm:刪除掉服務器端的指定文件 quit:退出sftp的交互模式,斷開和服務器之間的鏈接
TCP_Wrappers是一個工做在第四層(傳輸層)的的安全工具,對有狀態鏈接(TCP)的特定服務進行安全檢測並實現訪問控制,界定方式是凡是調用libwrap.so庫文件的的程序就能夠受TCP_Wrappers的安全控制。它的主要功能就是控制誰能夠訪問,常見的程序有rpcbind、vsftpd、sshd,telnet。
簡單來講 TCP Wrappers 只對走tcp協議的一些服務起到控制做用。
判斷方式:
1. 查看對應服務命令所在位置 which sshd 2. 查看指定命令執行時是否調用libwrap.so文件 ldd /usr/sbin/sshd | grep libwrap.so [root@centos-12 ~]# which sshd /usr/sbin/sshd [root@centos-12 ~]# ldd /usr/sbin/sshd | grep libwrap.so libwrap.so.0 => /lib64/libwrap.so.0 (0x00007fd38c0d1000)
以ssh爲例,每當有ssh的鏈接請求時,先讀取系統管理員所設置的訪問控制文件,符合要求,則會把此次鏈接原封不動的轉給ssh進程,由ssh完成後續工做;若是此次鏈接發起的ip不符合訪問控制文件中的設置,則會中斷鏈接請求,拒絕提供ssh服務。
TCP_Wrappers的使用主要是依靠兩個配置文件/etc/hosts.allow, /etc/hosts.deny,以此實現訪問控制,默認狀況下,/etc/hosts.allow,/etc/hosts.deny什麼都沒有添加,此時沒有限制 。
service_list@host: client_list 配置文件編寫規則: service_list: 是程序(服務)的列表,能夠是多個,多個時,使用,隔開 @host:設置容許或禁止他人從本身的哪一個網口進入。這一項不寫,就表明所有 client_list:是訪問者的地址,若是須要控制的用戶較多,可使用空格或,隔開 內置ACL:ALL(全部主機)、LOCAL(本地主機)
以ssh服務代碼示例:
拒絕單個 IP 使用 ssh 遠程鏈接: 配置文件: hosts.allow:空着 hosts.deny:sshd:10.10.10.1 拒絕某一網段使用 ssh 遠程鏈接: hosts.allow:空着 hosts.deny:sshd:10.10.10. 僅容許某一 IP 使用 ssh 遠程鏈接: hosts.allow:sshd:10.10.10.11 hosts.deny:sshd:ALL