ssh的簡介
ssh服務【Secure Shell 】:SSH 為建立在應用層基礎上的安全協定。SSH 是較可靠,專為遠端登入提供服務。
解決的問題: 對伺服器的遠端控制,遠端操作。
ssh服務是安全的、加密、基于S/C(服務端/用戶端)的遠端連接配接服務
【運作的sshd程序會監聽22号端口,提供遠端登入的服務,服務的内容: 遠端操作伺服器】
OpenSSH是使用SSH協定遠端登入的首選連接配接工具。它對所有流量進行加密,以消除竊聽、連接配接劫持和其他攻擊。此外,OpenSSH還提供了大量的安全隧道功能、多種身份驗證方法和複雜的配置選項。
/etc/ssh #檢視ssh下有哪些檔案
[[email protected] ~]# rpm -qa|grep openssh
openssh-server-7.4p1-21.el7.x86_64 --》提供服務的軟體包 -->sshd
openssh-7.4p1-21.el7.x86_64
openssh-clients-7.4p1-21.el7.x86_64 --》提供用戶端使用的指令的軟體包,ssh, scp, and sftp.
rpm 是linux裡軟體管理的指令 【-qa 查詢所有的已經安裝了的軟體 query all
yum 也是linux裡的軟體管理的指令,底層是基于rpm的 --》yum 是使用python開發的軟體管理工具
如何判斷一個服務是啟動還是沒有啟動?
1.檢視程序
ps aux|grep sshd
2.檢視端口
[[email protected] ~]# ss -anplut|grep sshd
tcp LISTEN 0 128 *:22 *:* users:(("sshd",pid=1043,fd=3))
[[email protected] ~]# netstat -anplut|grep sshd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1043/sshd
[[email protected] ~]# lsof -i:22
[[email protected]-server ~]$ w #檢視有哪些使用者遠端登入到linux系統裡了
ssh指令用于遠端管理Linux主機,文法:ssh [-p]端口号 主機@IP位址
使用ssh指令遠端登入
方式1: ssh 使用者名@伺服器位址 --》推薦
方式2: ssh -l 使用者名 伺服器位址
方式3: ssh 伺服器位址
ssh -p22 [email protected] #連接配接遠端伺服器
ifconfig #檢視連接配接是否成功
exit #退出連接配接
[[email protected] bin]# systemctl restart sshd #先stop,再start --》中間會中斷sshd服務
[[email protected] bin]# systemctl reload sshd #不中斷sshd服務, 重新加載配置檔案--》相當于restart
密鑰實作ssh遠端連接配接,下次連接配接就不用密碼啦【私鑰、公要】
#在本地主機中生成“密鑰對”,将公鑰傳送到遠端主機中
[[email protected] ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): #回車或設定密鑰存放的路徑
Enter passphrase (empty for no passphrase): #回車或設定密碼
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:U0qBtk4Cib7atzLDETvKEc8QkT3lPJUM40A6Op8IqTs [email protected]
The key's randomart image is:
+---[RSA 3072]----+
| o=+.+ooo |
|.o+o= =o . |
|.o...* .. . |
|.=o . +. o |
|= *o + S |
|o*++ . . |
|=++o |
|Eo* . |
|.. =.. |
+----[SHA256]-----+
#ls -a 檢視檔案
#将公鑰傳到遠端伺服器 ssh想要使用公鑰加密
ssh-copy-id 192.168.31.5
#在遠端伺服器中修改sshd服務的配置檔案
vim /etc/ssh/sshd_config
#1.将允許的密鑰驗證的參數設定為yes
PubkeyAuthentication yes
#2.将允許密碼驗證的參數設定為no
PasswordAuthentication no
#3.儲存并退出,重新開機ssh服務
systemctl restart sshd
#4.檢查是否設定完成
[[email protected] ~]# ssh [email protected]
Last login: Sun Aug 15 20:18:42 2021 from 192.168.31.128
修改sshd的配置檔案
修改sshd服務的端口号,重新進行遠端連接配接(systemctl restart sshd)
修改端口号的好處:預設情況下為22,不用指定端口别人就可以連接配接到我的伺服器,這樣不安全
注意:
1、端口号的範圍:0-65535
2、不能使用别的服務已經占用的端口(常見的:20、21、23、25、80、443、3389、3306)
#打開sshd_config檔案,修改端口為2233
vim /etc/ssh/sshd_config
Port 2233
#檢視端口号
ss -anplut|grep sshd
#重新開機sshd服務
systemctl restart sshd
#退出遠端連接配接終端,重新連接配接會發現連接配接不成功,可能是因為防火牆對新端口預設是拒絕新的端口号的,執行一下指令關閉防火牆和selinux
setenforce 0 #關閉selinux
#/etc/sysconfig/selinux 永久關閉
systemctl stop firewalld #關閉防火牆
遠端傳輸指令
scp指令用于在網絡中安全的傳輸檔案(如果想将檔案通過網絡傳輸給其他主機,恰好兩台都是Linux系統,就可以使用scp)
将本地檔案傳送到遠端主機 文法:scp [-P端口号 -r接檔案夾時要用] 本地檔案 遠端賬戶@遠端IP位址:遠端目錄
将本地檔案 /lianxi/zjh.txt 傳送到遠端主機的 /root
[[email protected] lianxi]# scp zjh.txt [email protected]:/root
zjh.txt 100% 12 0.8KB/s 00:00
将遠端主機檔案下載下傳到本地 文法:scp [選項] 遠端使用者@IP位址:遠端檔案 本地目錄
将遠端主機 /root/zhu 下載下傳到本地 /lianxi
[[email protected] lianxi]# scp -P22 -r [email protected]:/root/zhu/ ./
jh.txt
SSH的常見問題
1、ssh服務關閉後,是否還可以ssh進入伺服器?已經ssh連接配接上的程序是否會退去?
答案: 關閉ssh服務,已經連接配接的ssh視窗不會斷開,繼續可以使用
老連接配接可以繼續使用,新的連接配接連不上
2、如何知道哪些人ssh遠端登入進入了我們的linux系統?
答案:w --》檢視還在我們linux系統裡的使用者
檢視日志–》/var/log/secure
3、如何加強我們的ssh服務?
答案:1.禁用root使用者遠端登入 --》黑客就需要去猜我們的使用者名了
2.把密碼設定複雜
3.修改端口号 --》需要去尋找我的ssh的端口号
4.禁用密碼認證,啟用密鑰認
5.禁止root登入
6.更新openssh,修補漏洞
4、如何暴力破解ssh的使用者名(root)和密碼?
答案:暴力破解 --》窮舉–》一個一個的密碼去試試
1萬個密碼
python,shell(腳本)
ssh的實操
#1.修改端口号
ListenAddress 0.0.0.0 --》代表任意的接口的ip位址上都提供ssh服務
#2.禁用root使用者登入
ListenAddress 192.168.0.2 --》隻是在192.168.0.2上提供ssh服務
PermitRootLogin no --》禁用root使用者遠端登入 (連接配接還有詳細使用者名)
#為什麼禁用了用ssh連的時候不能使用root使用者,登入進去就可以用?
一連接配接,我們就要接觸sshd,如果已經連了,就不歸sshd管了
#3.ssh遠端登入的方式
方式1: ssh 使用者名@伺服器位址 --》推薦
方式2: ssh -l 使用者名 伺服器位址
方式3: ssh 伺服器位址
#4.檢視日志
如何知道哪些人ssh遠端登入進入了我們的linux系統?
#5.ssh伺服器裡有了公鑰和私鑰 為什麼還需要使用linux系統裡使用者名和密碼?
#6.kown_hosts檔案的作用 #cat man
練習:
1.修改端口号,具體自定義
2.禁用root使用者登入,建立一個普通的使用者sc,并且設定密碼
3.ssh遠端登入,在其他的linux系統上或者windows上
4.檢視日志
tail -f logfile #實時檢視日志
tail -n logfile #檢視最新n行
5.檢視kown_hosts檔案的内容
#Ubuntu與centos也可以用ssh連接配接
日志管理
什麼日志?
日志是系統用來記錄系統運作時候的一些相關資訊文本檔案
日志有什麼用?
日志是為了儲存相關程式的運作狀态、錯誤資訊等,為了對系統分析、儲存曆史記錄以及出現錯誤時分析錯誤的使用
Linux系統日志類型:
核心資訊
服務資訊
應用程式資訊
什麼是rsyslog?
rsyslog是Linux系統中用來實作日志功能的服務,rsyslog預設是已安裝,并且啟動的
#rsyslog的狀态、啟動、停止、重新開機
systemctl status|start|stop|restart rsyslog
#rsyslog的配置檔案為:/etc/rsyslog.conf
#日志消息一般儲存在:/var/log
#檢視日志指令一般使用
tail -f logfile #實時檢視日志
tail -n logfile #檢視最新n行
facility(設施),用來定義日志消息的來源,友善對日志進行分類
[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-xT9Ij8yL-1629042821344)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20210815214216554.png)]
priority(日志級别)定義不同消息的級别
[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-avslaR2I-1629042821347)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20210815214352785.png)]
檢視日志位置
ssh為例
[[email protected] lianxi]# vim /etc/sshd_config
# Logging
#SyslogFacility AUTH
SyslogFacility AUTHPRIV
日志檔案
tail /var/log/secure #有遠端登入的消息
配置日志伺服器:多台伺服器,同一集中在一台伺服器上
日志伺服器配置
#在日志伺服器中開啟tcp或udp監聽
vim /etc/rsyslog.cont
# Provides UDP syslog reception
# for parameters see http://www.rsyslog.com/doc/imudp.html
#module(load="imudp") # needs to be done just once
input(type="imudp" port="514")
# Provides TCP syslog reception
# for parameters see http://www.rsyslog.com/doc/imtcp.html
#module(load="imtcp") # needs to be done just once
input(type="imtcp" port="514")
#重新開機
systemctl restart rsyslog
日志客戶配置
vim /etc/rsyslog.conf
systemctl restart rsyslog
[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-42woNKy2-1629042821349)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20210815222859072.png)]
測試效果
yum install samba -y #在日志用戶端安裝一個軟體
tail /var/log/messages #檢視有沒有日志生成
tail /var/log/messages #在伺服器檢視生成了日志
temctl restart rsyslog
**日志客戶配置**
```python
vim /etc/rsyslog.conf
systemctl restart rsyslog
[外鍊圖檔轉存中…(img-42woNKy2-1629042821349)]
測試效果
yum install samba -y #在日志用戶端安裝一個軟體
tail /var/log/messages #檢視有沒有日志生成
tail /var/log/messages #在伺服器檢視生成了日志