系统学习ssh服务
文章目錄
- 一、SSH簡介
- 二、SSH ---加固方法
- 1、修改端口號
- 2、禁用root用戶
- 3、禁用密碼認證
- 4、配置密鑰認證
- 5、升級openssh
- 三、使用ssh遠程登錄
- 1、通過xshell連到其他遠程服務器
- 2、scp 遠程拷貝
- 3、也可以使用sftp 進行上傳下載
- 四、練習:
- 1、生成公鑰和私鑰
- 2、傳到需要連接的服務器
一、SSH簡介
概念:SSH([Secure Shell]) 為建立在應用層基礎上的安全協議。SSH 是較可靠,專為遠程登錄會話和其他網絡服務提供安全性的協議。利用 SSH 協議可以有效防止遠程管理過程中的信息泄露問題。
如何搭建ssh服務?
軟件來實現某個功能–》遠程登錄
openssh
OpenSSH是使用SSH協議進行遠程登錄的首要連接工具。它對所有通信進行加密,以消除竊聽、連接劫持和其他攻擊。此外,OpenSSH提供了大量的安全隧道功能、幾種身份驗證方法和復雜的配置選項。
centos7/8/6安裝好系統,默認安裝openssh
[root@VM-12-8-centos ~]# rpm -qa |grep openssh openssh-clients-7.4p1-22.el7_9.x86_64 openssh-server-7.4p1-22.el7_9.x86_64 openssh-7.4p1-22.el7_9.x86_64 [root@VM-12-8-centos ~]#openssh-clients 客戶端程序
openssh-server 服務器端
c/s架構的軟件
sshd_config --》sshd 服務器端的進程
ssh_config --》ssh 客戶端命令的配置文件
- sshd進程的例子:
在一個窗口執行如下代碼并執行之后,關閉窗口不會繼續運行
#!/bin/bash i=1 while true doecho "sanchuang $i"((i++))sleep 1 done上圖為另一個窗口的測試過程
使用nohup命令+ & 將進程放在后臺執行,關閉窗口程序繼續運行
[root@VM-12-8-centos ~]# nohup bash while.sh &二、SSH —加固方法
配置文件就是一個傳遞參數的作用,修改配置文件之后要重啟才能生效
vim etc/ssh/sshd_config(截取config文件中的部分行)
#Port 22 默認22號端口PermitRootLogin yes 允許root用戶登錄(改為no表示進程)#MaxAuthTries 6 認證的時候,最多允許輸入密碼6次#PubkeyAuthentication yes 公鑰認證AuthorizedKeysFile .ssh/authorized_keys 密鑰文件存放路徑PasswordAuthentication yes 密碼登錄是打開的1、修改端口號
? Port 2299
在配置文件中將port改為2299端口號,重啟服務失敗后關閉selinux,后ok
[root@VM-12-8-centos ssh]# pwd /etc/ssh [root@VM-12-8-centos ssh]# vim sshd_config [root@localhost ssh]# vim /etc/selinux/config SELINUX=disabled [root@localhost ssh]# getenforce 查看selinux的狀態 Enforcing [root@localhost ssh]# setenforce 0 臨時調整selinux的策略為寬容模式 [root@localhost ssh]# getenforce Permissive [root@localhost ssh]# [root@localhost ssh]# service sshd restart Redirecting to /bin/systemctl restart sshd.service [root@localhost ssh]# netstat -anplut|grep 2299 tcp 0 0 0.0.0.0:2299 0.0.0.0:* LISTEN 2383/sshd [root@localhost ssh]#要想重新連接到ssh服務,還需要關閉防火墻
[root@localhost ssh]# service firewalld stop 關閉防火墻 Redirecting to /bin/systemctl stop firewalld.service [root@localhost ssh]#將端口號改為2299,別人并不知我們開了22端口,并且不知2299端口做什么的,不容易被入侵
擴:端口號的范圍 2^16 0–65535 (在傳輸層封裝的時候只允許到65535)
2、禁用root用戶
PermitRootLogin no #將yes改為noⅠ、(給其他某個用戶授權登錄,用這個用戶進行登錄)
可以用sudo命令給該用戶授權,就可以更流暢的進行操作;或者使用su - root,切入到root用戶操作
問:為什么登錄系統不行,進入系統后可以重新登錄root了呢?
—因為切換用戶沒經過ssh服務 遠程登錄過來的時候會在sshd里開一個進程sshd---->bash ---->su - root(進來之后知識切換了用戶而已)
Ⅱ、w查看有哪些用戶登錄到了你的服務器
殺死某個其他人登錄進來的進程,使用pstree -p,kill它的進程號即可
我的是101的終端號是pts/2 , 過濾出其他登錄我的機器的進程,kill -9 +pid號 即可,后續改密碼或者設置防火墻規則
Ⅲ、如果多人連接到你的服務器
使用wall + 其他 可以發送消息給其他終端
3、禁用密碼認證
PasswordAuthentication no4、配置密鑰認證
密鑰認證
Ⅰ、ssh使用的算法是非對稱加密的
對稱加密算法需要兩個密鑰:公開密鑰( publickey)和私有密鑰( privatekey)。公開密鑰與私有密鑰是一對,如果用公開密鑰對數據進行加密,只有用對應的私有密鑰才能解密;如果用私有密鑰對數據進行加密,那么只有用對應的公開密鑰才能解密。因為加密和解密使用的是兩個不同的密鑰,所以這種算法叫作非對稱加密算法。
Ⅱ、 數字簽名
? ----身份識別的一種加密算法
[root@VM-12-8-centos ssh]# ls moduli ssh_host_dsa_key ssh_host_ecdsa_key.pub ssh_host_rsa_key ssh_config ssh_host_dsa_key.pub ssh_host_ed25519_key ssh_host_rsa_key.pub sshd_config ssh_host_ecdsa_key ssh_host_ed25519_key.pub [root@VM-12-8-centos ssh]#Ⅲ、key結尾的是私鑰,.pub結尾的是公鑰,ed25519等是加密算法
[root@VM-12-8-centos ssh]# cat ssh_host_dsa_key -----BEGIN DSA PRIVATE KEY----- MIIBuwIBAAKBgQDoMhvRYUDmFEJ+HsLVfpi2cO0LQeCymX+qIwLAINCkseix1+or Cadldgq/s5gHJAQQkTnEN4w1xc6fhcpMUl80txOAmaB6mVNtlfqSTwI/DiWSSw25 EP0VAcrnD50aHn9cu0tLMmW7eYyy/yw9fqiEm7w4v+jHJy7dTom4EokzvwIVAKj1 LZYZEuo2+H+dWVHOloG8tJHFAoGBAL5IxpNjA8IhMAhN6ku8Pk3R9bRH7Ztb9iUL wV1gtQ2RFPR2VrggfRi7yAVwzDgWpDrcx8obofHDVslgbRZiX4tb99uae82pSM1h HwAteYpHvsV3zJa12uQq1t0WCAo6/+DqqncClnHGandmooQIqiBqX4YvptHWP+9F GoBRVaCwAoGAYWR+YXllXN0NDh/9B+pM0cc5Wgc4+oGmXQNb1Tpy1FOeyOgWka4w DxwSlaeX+XYTTrhpPZ+087KW5KBH+LadQlULBmgM8gUp7PpwDaW2MFopHk1MgSJ4 byAHFCzZohm/tr0ohqCHITU3lXNWvDqutaRV1M2dEQScPHb9UpWa+W4CFC7mXlO3 lIsUAq5xLUyZBjZSTgiw -----END DSA PRIVATE KEY-----公鑰和私鑰是一對文件,文件里面是一段字符串,告訴加密算法加密的時候,使用的參數。
[root@localhost .ssh]# pwd /root/.ssh [root@localhost .ssh]# ls known_hosts 用來存放對方的服務器的公鑰的,ssh連接登錄的時候會提示 [root@localhost .ssh]#用來保存你曾經連過的哪臺服務器的公鑰
[root@nginx-kafka03 .ssh]# cat known_hosts 127.0.0.1 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBAU4RcXypueSDmTnshKhtROhMT0ZL6V3j6jzNsgmOXEtmVsuoXrzzciaSRKCNTrlDXzV4HZEODVAOE+KIHHv84Q= 192.168.10.143 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBAU4RcXypueSDmTnshKhtROhMT0ZL6V3j6jzNsgmOXEtmVsuoXrzzciaSRKCNTrlDXzV4HZEODVAOE+KIHHv84Q= 192.168.10.161 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBB如果遇到你連接的服務器提示你,你保存的公鑰和你正在連接的機器的公鑰不一樣。很可能是你保存的和你正在連的機器的IP地址沖突,會影響你連不上,只需要把know_hosts文件刪除即可
Ⅳ、ssh的公鑰認證流程
1.生成密鑰對,在192.168.1.105上使用root用戶生成密鑰對,密鑰對會在用戶的家目錄下
[root@localhost ssh]# ssh-keygen -t rsa 生成密鑰對,指定類型為rsa 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:Ecds9x/kXGpjN1lXDtudEerhZyCFAJ4ugGRThdehBsM root@localhost.localdomain The key's randomart image is: +---[RSA 2048]----+ | +o+o..o++o ...o+| |o oEo.o..o+.o .*B| | . ..o o.. o ==oO| | o . . + O*.| | . .S = *o| | . o .| | | | | | | +----[SHA256]-----+ [root@localhost ssh]# cd /root/.ssh/ 進入用戶的家目錄 [root@localhost .ssh]# ls id_rsa 私鑰 id_rsa.pub 公鑰 known_hosts [root@localhost .ssh]# ll 不建議修改密鑰文件的權限,不然會導致密鑰失效 總用量 12 -rw-------. 1 root root 1679 7月 27 16:46 id_rsa -rw-r--r--. 1 root root 408 7月 27 16:46 id_rsa.pub -rw-r--r--. 1 root root 182 7月 27 16:34 known_hosts [root@localhost .ssh]#2、上傳公鑰到對方的服務器,要求對方的服務器運行root用戶登錄
[root@localhost .ssh]# ssh-copy-id -p 2288 -i id_rsa.pub root@192.168.1.173 /bin/ssh-copy-id: INFO: Source of key(s) to be installed: "id_rsa.pub" /bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys root@192.168.1.173's password:Number of key(s) added: 1Now try logging into the machine, with: "ssh -p '2288' 'root@192.168.1.173'" and check to make sure that only the key(s) you wanted were added.3.驗證登錄是否需要密碼
[root@localhost .ssh]# ssh -p '2288' 'root@192.168.1.173' Last failed login: Wed Jul 27 16:53:28 CST 2022 from 192.168.1.105 on ssh:notty There were 30 failed login attempts since the last successful login. Last login: Wed Jul 27 11:55:11 2022 [root@nginx-kafka01 ~]# [root@localhost .ssh]# scp -P 2288 'root@192.168.1.173':/etc/passwd . passwd 100% 1217 561.0KB/s 00:00 [root@localhost .ssh]# [root@localhost .ssh]# ssh -p '2288' 'root@192.168.1.173' mkdir /wangshuai5、升級openssh
三、使用ssh遠程登錄
1、通過xshell連到其他遠程服務器
[root@localhost ssh]# ssh root@192.168.1.173 The authenticity of host '192.168.1.173 (192.168.1.173)' can't be established. ECDSA key fingerprint is SHA256:R5hCgn7KQWr9ayqU/Qs50+ipykX+RnlV73ZVBal6/lI. ECDSA key fingerprint is MD5:6d:97:ac:00:06:a7:f1:5c:fd:17:f6:b4:d5:66:d5:a5. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.1.173' (ECDSA) to the list of known hosts. root@192.168.1.173's password: Permission denied, please try again. root@192.168.1.173's password: Permission denied, please try again. root@192.168.1.173's password: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password). [root@localhost ssh]# ssh cali@192.168.1.173 cali@192.168.1.173's password: Last failed login: Wed Jul 27 12:00:45 CST 2022 from 192.168.1.122 on ssh:notty There were 3 failed login attempts since the last successful login. Last login: Wed Jul 27 11:53:17 2022 [cali@nginx-kafka01 ~]$可以通過ssh 使用普通用戶在它的家目錄下創建文件夾,其他目錄無權限
[root@localhost ssh]# ssh cali@192.168.1.173 mkdir /home/cali/fengdeyong/zhangtongtong -p2、scp 遠程拷貝
底層通過ssh協議遠程連接到其他的機器上,復制文件
[root@localhost ssh]# scp cali@192.168.1.173:/etc/passwd /etc/ssh cali@192.168.1.173's password: passwd 100% 1217 677.1KB/s 00:00 [root@localhost ssh]# scp -r cali@192.168.1.173:/boot /etc/ssh源 目的地 [root@localhost ssh]# scp -r /etc/passwd cali@192.168.1.173:~ cali@192.168.1.173's password: 將我本機的復制到遠程那臺機器 passwd 100% 1692 745.6KB/s 00:003、也可以使用sftp 進行上傳下載
[root@localhost ssh]# sftp cali@192.168.1.173
ls 看家目錄下有哪些文件
!ls 看本地當前目錄有哪些
pwd
lpwd
cd
lcd
get 下載
put 上傳
put -r 上傳文件夾
sftp> put -r grub2
exit
四、練習:
1、生成公鑰和私鑰
[root@nginx-kafka03 .ssh]# ssh-keygen -t rsa 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:z9/yYqcZGjUNRW6TzguY7QV2SV/4qiXVyld/RGU5MuM root@nginx-kafka03.localdomain The key's randomart image is: +---[RSA 2048]----+ | .+.*| | B.Bo| | = @+o| | = E..=| | S o =o=+o| | o o.+=.+| | + o+...| | +=+. | | ..+*o | +----[SHA256]-----+ [root@nginx-kafka03 .ssh]# [root@nginx-kafka03 .ssh]# cd /root/.ssh [root@nginx-kafka03 .ssh]# ls id_rsa id_rsa.pub known_hosts ---用來存放第一次連接過去 [root@nginx-kafka03 .ssh]#2、傳到需要連接的服務器
-i 指定那個文件 [root@nginx-kafka03 .ssh]# ssh-copy-id -i id_rsa.pub root@1.14.183.210 /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "id_rsa.pub" /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys root@1.14.183.210's password: Number of key(s) added: 1Now try logging into the machine, with: "ssh 'root@1.14.183.210'" and check to make sure that only the key(s) you wanted were added.[root@nginx-kafka03 .ssh]# [root@nginx-kafka03 .ssh]# ssh root@1.14.183.210 再次連接無需輸入密碼,并切換到另一臺機器 Last login: Tue Aug 2 16:54:17 2022 from 222.244.212.228 [root@VM-12-8-centos ~]# cd /root/.ssh [root@VM-12-8-centos .ssh]# ls 并生成一個新的文件,存放對方的公鑰 authorized_keys 用來驗證用戶身份的合法性 [root@VM-12-8-centos .ssh]#總結
- 上一篇: python机器学习 | SVM算法介绍
- 下一篇: 基于Python的药店|药房管理系统的设