目錄
一、SSH協(xié)議
1.SSH簡介
2.SSH的優(yōu)點
3.SSH遠程控制軟件及服務
二、SSH遠程管理配置
1.配置OpenSSH服務端
2.使用SSH客戶端軟件
(1)SSH遠程登錄
(2)scp遠程傳輸文件
3.SSH登錄驗證的兩種驗證方式
(1)密碼驗證
(2)密鑰對驗證
一、SSH協(xié)議
1.SSH簡介
????????SSH 為 Secure Shell的縮寫, 為建立在應用層基礎上的安全協(xié)議。SSH 是較可靠,專為遠程登錄會話和其他網(wǎng)絡服務提供安全性的協(xié)議。利用 SSH 協(xié)議可以有效防止遠程管理過程中的信息泄露問題。
2.SSH的優(yōu)點
- 數(shù)據(jù)加密
- 數(shù)據(jù)壓縮(提高傳輸速率)
????????傳統(tǒng)的網(wǎng)絡服務程序,如:ftp、pop和telnet在本質上都是不安全的,因為它們在網(wǎng)絡上用明文傳送口令和數(shù)據(jù),別有用心的人非常容易就可以截獲這些口令和數(shù)據(jù)。而且,這些服務程序的安全驗證方式也是有其弱點的, 就是很容易受到“中間人”這種方式的攻擊。
????????通過使用SSH,你可以把所有傳輸?shù)臄?shù)據(jù)進行加密,這樣"中間人"這種攻擊方式就不可能實現(xiàn)了,而且也能夠防止DNS欺騙和IP欺騙。
????????使用SSH,還有一個額外的好處就是傳輸?shù)臄?shù)據(jù)是經(jīng)過壓縮的,所以可以加快傳輸?shù)乃俣?。SSH有很多功能,它既可以代替telnet,又可以為ftp、PoP、甚至為PPP提供一個安全的"通道"
3.SSH遠程控制軟件及服務
SSH客戶端:Putty、Xshell、CRT、MobaXterm
用于遠程連接主機的軟件,企業(yè)一般使用Putty這類開源軟件。
SSH服務端: OpenSSH
OpenSSH是實現(xiàn) SSH協(xié)議的開源軟件項目,適用于各種UNIX、Linux操作系統(tǒng)。Centos 7系統(tǒng)默認已安裝openssh相關軟件包,并已將sshd 服務添加為開機自啟動。
sshd服務
sshd服務默認使用的是TCP的22端口。
sshd服務的默認配置文件在/etc/ssh下,ssh_config是針對客戶端的配置,sshd_config是針對服務端的配置。
二、SSH遠程管理配置
1.配置OpenSSH服務端
服務端配置文件sshd_config常用字段及解釋
字段 | 解釋 |
---|---|
Port 22 | 監(jiān)聽端口(默認22) |
ListenAddress 0.0.0.0 | 監(jiān)聽ipv4地址網(wǎng)段(默認全網(wǎng)段) |
LoginGraceTime 2m | 登錄驗證超時時間 2分鐘 |
PermitRootLogin no | 禁止root用戶登錄 |
MaxAuthTries 6 | 最大重試次數(shù) 6次 |
MaxSessions 10 | 最大支持會話數(shù)量 10個 |
PermitEmptyPasswords no | 禁止空密碼用戶登錄 |
UseDNS no | 禁用DNS反向解析(提高服務器響應速度) |
AllowUsers 用戶1 用戶2... DenyUsers 用戶1 用戶2... |
允許或禁止某用戶登錄(多個用戶用空格隔開) 注:這兩條字段選其一,不能同時使用 |
上一條用戶名后加上@12.0.0.1 | 與上一條實現(xiàn)允許或禁止用戶只能在指定ip的主機上登錄 |
2.使用SSH客戶端軟件
(1)SSH遠程登錄
[root@localhost1 ~]# ssh [-p 端口號] [用戶名@]服務端ip? ? ? ? ?// 遠程登錄指定服務端
-p 指定遠程登錄的端口,不寫默認使用22端口
ip前加上"用戶名@"指定登錄的用戶,不寫默認使用當前用戶
[root@localhost2 ~]# exit? ? ? ? ? ? //使用exit命令退出登錄
//使用root用戶登錄192.168.116.20主機
[root@localhost1 ~]#ssh -p 22 root@192.168.116.20
The authenticity of host '192.168.116.20 (192.168.116.20)' can't be established.
ECDSA key fingerprint is SHA256:BhhxtVT0Hy+tIQ4bMqAvyKJUBldEolUbURl/42FYg4o.
ECDSA key fingerprint is MD5:a0:5b:4f:33:31:ef:38:01:31:3b:b4:14:ad:a1:23:29.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.116.20' (ECDSA) to the list of known hosts.
root@192.168.116.20's password:
Last login: Tue Aug 16 09:09:20 2022
'abrt-cli status' timed out
//登錄成功
[root@localhost2 ~]#
//退出登錄
[root@localhost2 ~]#exit
登出
Connection to 192.168.116.20 closed.
//回到本機
[root@localhost1 ~]#
注:當用戶第一次登錄ssh服務器時,必須接受服務器發(fā)來的ECDSA密鑰(根據(jù)提示輸入"yes")后才能繼續(xù)驗證。接收的密鑰信息將保存到~/. ssh/know_hosts文件中。密碼驗證成功以后,即可登錄目標服務器的命令行環(huán)境中。
//剛剛登錄時收到的密鑰
[root@localhost1 ~]#cat .ssh/known_hosts
192.168.116.20 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBCBhY9r8mXXzHMu2IMqVnvgW99vU8Xnio3MpUrkYwbrzfzXG37IiWriziEwIMm5c8XlS+q/iIj8Cdm+drMB6REk=
(2)scp遠程傳輸文件
上傳文件(客戶端傳到服務端)
[root@localhost1 test]# scp [-P 端口號]?文件名 [用戶名@]服務端ip:上傳到的目錄
-P?指定遠程登錄的端口,不寫默認使用22端口
-r 目錄 遞歸傳輸目錄
ip前加上"用戶名@"指定登錄的用戶,不寫默認使用當前用戶
//首先創(chuàng)建文件夾用于scp上傳
[root@localhost1 /]#mkdir -p /data/test
[root@localhost1 /]#cd /data/test/
[root@localhost1 test]#touch 1.txt
//使用root用戶scp遞歸將/data目錄上傳到服務端的/root目錄下
[root@localhost1 test]#scp -P 22 -r /data root@192.168.116.20:/root
root@192.168.116.20's password:
1.txt 100% 0 0.0KB/s 00:00
//進入服務機,發(fā)現(xiàn)家目錄多了data目錄
[root@localhost2 ~]#ls
anaconda-ks.cfg initial-setup-ks.cfg 模板 圖片 下載 桌面
data 公共 視頻 文檔 音樂
//查看這個data目錄,確認是scp上傳過來的
[root@localhost2 ~]#cd data
[root@localhost2 data]#tree
.
└── test
└── 1.txt
1 directory, 1 file
下載文件(從服務端下載到客戶端)?
[root@localhost1 test]# scp [-P 端口號]?[用戶名@]服務端ip:文件路徑 保存到本地的路徑
-P?指定遠程登錄的端口,不寫默認使用22端口
-r 目錄 遞歸傳輸目錄
ip前加上"用戶名@"指定登錄的用戶,不寫默認使用當前用戶
//在服務端新建測試文件
[root@localhost2 ~]#touch test.txt
[root@localhost2 ~]#ls
anaconda-ks.cfg test.txt 模板 圖片 下載 桌面
initial-setup-ks.cfg 公共 視頻 文檔 音樂
//以root用戶scp遠程下載服務端的test.txt到/data目錄下
[root@localhost1 ~]#scp -P 22 root@192.168.116.20:/root/test.txt /data
root@192.168.116.20's password:
test.txt 100% 0 0.0KB/s 00:00
//查看發(fā)現(xiàn)獲取成功
[root@localhost1 ~]#ls /data
test.txt
3.SSH登錄驗證的兩種驗證方式
(1)密碼驗證
對服務器中本地系統(tǒng)用戶的登錄名稱、密碼進行驗證。簡便,但可能會被暴力破解
????????默認情況下,遠程連接都是使用的密碼驗證,即需要輸入登錄用戶的密碼。
(2)密鑰對驗證
要求提供相匹配的密鑰信息才能通過驗證。通常先在客戶端中創(chuàng)建一對密鑰文件(公鑰、私鑰),然后將公鑰文件放到服務器中的指定位置。遠程登錄時,系統(tǒng)將使用公鑰、私鑰進行加密/解密關聯(lián)驗證。能增強安全性,且可以免交互登錄。
公鑰和私鑰的關系:
- 公鑰和私鑰是成對生成的,這兩個密鑰互不相同,可以互相加密和解密。
- 不能根據(jù)一個密鑰來推算出另一個密鑰(非對稱密鑰)。
- 公鑰對外公開,私鑰只有私鑰的持有人才知道。
SSH密鑰對驗證過程:
配置使用密鑰對驗證登錄
1.生成密鑰對
[root@localhost1 ~]#ssh-keygen? [-t 加密算法]? ?//生成密鑰對
-t? 指定加密算法(rsa、dsa、ecdsa等)
//生成密鑰對(使用dsa加密算法)
[root@localhost1 ~]#ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/root/.ssh/id_dsa): --指定密鑰對文件位置(默認當前用戶家目錄的.ssh/下)
Enter passphrase (empty for no passphrase): --是否給密鑰對設置密碼(為空則不指定)
Enter same passphrase again: --指定后需要重輸密碼校驗
Your identification has been saved in /root/.ssh/id_dsa. --私鑰位置
Your public key has been saved in /root/.ssh/id_dsa.pub. --公鑰位置
The key fingerprint is:
SHA256:vjGR6YAff/Nah7t+m1Ou6C0YWcrvUZaZ0tRQ5tpGVdg root@localhost1
The key's randomart image is:
+---[DSA 1024]----+
| .+*|
| .=E|
| . +|
| . o .o B |
| . o S. +. O o|
| . * .= = ..|
| . * o++ .o |
| =.+o*o..|
| . .=O+=+ |
+----[SHA256]-----+
[root@localhost1 ~]#ls .ssh/
id_dsa id_dsa.pub known_hosts
2.1將公鑰發(fā)送給服務器(手動)
//查看公鑰文件
[root@localhost1 ~]#cat .ssh/id_dsa.pub
ssh-dss AAAAB3NzaC1kc3MAAACBAI9yxdO7V/W/ATYiSoKz4MbWZDRpE902lBpH0i5dmghNwWAxqV0DRMjetyvUc+R466NdXmp7N32ARuj+wEMNZ73g3FdurzkhwRmGi8RhR9obYkL3cqS34dmQvAWAlYmNYfqIg8Z2nv9KLwCrsnKfJDevlgmjpyj+Bxzx0smpIq/TAAAAFQDUYT4psdnG+JAUJfUhTCBz5AivsQAAAIAVLo/baTi/Z/xDod4N+bLwDYylsGKyWUuB8pTsMz/IPBH6KWPMWB62H9cO4rXhX2VQsKQXFBv77gqhpqzCB0iqQvc1DOHNXIp33tRlOvLntTYR02jduFnMtw9XyKjpIRaQmON3JY97liYL9zqP4Dd2RwSbPvSAhCPgWWL6lEX7awAAAIB8ad42MTdKzRVhZ3wu6KBmvn0LmeiX0NO5WQcPoOfwSqH7hCbhV2Dy+BfM3OklL6I3HesTajtuyLy6UBL83ayrvl8AXO0y7NCPOuZCm59YYXF8SE7pQz7JZBFyA9jTm9Ba4W0rrwHo3x1OkYXFd5LQowO71k/KKuWGQMGssR8Uiw== root@localhost1
//在服務端當前用戶家目錄下的.ssh下創(chuàng)建authorized_keys(用于存放公鑰)
[root@localhost2 ~]cd .ssh
[root@localhost2 .ssh]#vim authorized_keys
將之前生成的公鑰復制進這個文件
2.2將公鑰發(fā)送給服務器(自動)
[root@localhost2 ~]# ssh-copy-id -i 公鑰文件 ?用戶@服務端ip??
//使用命令自動傳送公鑰文件,會自動生成authorized_keys文件
[root@localhost1 ~]#cd .ssh
[root@localhost1 .ssh]#ssh-copy-id -i id_dsa.pub root@192.168.116.20
//查看一下
[root@localhost2 ~]#cd .ssh
[root@localhost2 .ssh]#ls
authorized_keys known_hosts
[root@localhost2 .ssh]#cat authorized_keys
ssh-dss AAAAB3NzaC1kc3MAAACBAI9yxdO7V/W/ATYiSoKz4MbWZDRpE902lBpH0i5dmghNwWAxqV0DRMjetyvUc+R466NdXmp7N32ARuj+wEMNZ73g3FdurzkhwRmGi8RhR9obYkL3cqS34dmQvAWAlYmNYfqIg8Z2nv9KLwCrsnKfJDevlgmjpyj+Bxzx0smpIq/TAAAAFQDUYT4psdnG+JAUJfUhTCBz5AivsQAAAIAVLo/baTi/Z/xDod4N+bLwDYylsGKyWUuB8pTsMz/IPBH6KWPMWB62H9cO4rXhX2VQsKQXFBv77gqhpqzCB0iqQvc1DOHNXIp33tRlOvLntTYR02jduFnMtw9XyKjpIRaQmON3JY97liYL9zqP4Dd2RwSbPvSAhCPgWWL6lEX7awAAAIB8ad42MTdKzRVhZ3wu6KBmvn0LmeiX0NO5WQcPoOfwSqH7hCbhV2Dy+BfM3OklL6I3HesTajtuyLy6UBL83ayrvl8AXO0y7NCPOuZCm59YYXF8SE7pQz7JZBFyA9jTm9Ba4W0rrwHo3x1OkYXFd5LQowO71k/KKuWGQMGssR8Uiw== root@localhost1
3.重新使用ssh遠程登錄服務端,會提示使用密鑰驗證登錄(如果為密鑰設置了密碼,還需要輸入密鑰的密碼)
?
補充:免交互登錄
- 公鑰文件設置了密碼
????????服務端導入公鑰文件后,建立ssh代理(此方式只在當前連接有效)文章來源:http://www.zghlxwxcb.cn/news/detail-469194.html
[root@localhost1 ~]#ssh-agent bash
[root@localhost1 ~]#ssh-add
Enter passphrase for /root/.ssh/id_dsa:
Identity added: /root/.ssh/id_dsa (/root/.ssh/id_dsa)
- 公鑰文件未設置密碼(密碼為空)
????????這種情況可以在密鑰驗證后直接登錄文章來源地址http://www.zghlxwxcb.cn/news/detail-469194.html
到了這里,關于Linux配置SSH遠程登錄管理的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!