日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

SSH基本概述

SSH是一個安全協議,在進行數據傳輸時,會對數據包進行加密處理,加密后在進行數據傳輸。確保了數據傳輸安全。那SSH服務主要功能有哪些呢?

1.提供遠程連接服務器的服務

2.對傳輸的數據進行加密

那么除了SSH協議能提供遠程連接服務,Telnet也能提供遠程連接服務, 那么分別的區別是什么呢?

ssh服務會對傳輸數據進行加密, 監聽在本地22/tcp端口, ssh服務默認支持root用戶登錄

telnet服務不對數據進行加密, 監聽在本地23/tcp端口, Telnet默認不支持root用戶登錄

服務連接方式服務數據傳輸服務監聽端口服務登陸用戶ssh加密22/tcp默認支持root用戶登陸telnet明文23/tcp不支持root用戶登陸

企業面試題:

下列服務,分別使用的那個端口?

ftp
DNS
ssh
telnet
MySQL
http
https

案例: 使用wireshark驗證telnet明文傳輸與ssh加密傳輸

1.安裝telnet服務并運行

[root@m01 ~]# yum install telnet-server -y
[root@m01 ~]# systemctl start telnet.socket

2.使用wireshark檢測vmnet8網卡上telnet的流量

SSH遠程管理服務實戰

 

?

3.telnet是無法使用root用戶登錄linux系統,需要創建普通用戶

[root@m01 ~]# useradd zls
[root@m01 ~]# echo "1"| passwd --stdin zls

4.使用普通用戶進行telnet登錄

SSH遠程管理服務實戰

 

?

5.搜索wireshark包含telnet相關的流量

SSH遠程管理服務實戰

 

?

SSH遠程管理服務實戰

 

?

SSH遠程管理服務實戰

 

?

6.使用wireshark分析ssh流量

SSH遠程管理服務實戰

 

?

SSH遠程管理服務實戰

 

?

SSH遠程管理服務實戰

 

?

SSH遠程管理服務實戰

 

?

SSH遠程管理服務實戰

 

?

SSH相關命令

SSH有客戶端與服務端,我們將這種模式稱為C/S架構,ssh客戶端支持windows、Linux、mac等平臺。

在ssh客戶端中包含 ssh|slogin遠程登陸、scp遠程拷貝、sftp文件傳輸、ssh-copy-id秘鑰分發等應用程序。


ssh遠程登錄服務器命令示例

ssh -p22 root@10.0.0.61
# -p指定連接遠程主機端口,默認22端口可省略
# root@remotehost
# "@"前面為用戶名,如果用當前用戶連接,可以不指定用戶
# "@"后面為要連接的服務器的IP

scp復制數據至遠程主機命令(全量復制)

# -P 指定端口,默認22端口可不寫
# -r 表示遞歸拷貝目錄
# -p 表示在拷貝文件前后保持文件或目錄屬性不變
# -l 限制傳輸使用帶寬(默認kb)
#推:將本地/tmp/oldboy推送至遠端服務器10.0.0.61的/tmp目錄,使用對端的root用戶
[root@m01 ~]# scp -P22 -rp /tmp/oldboy oldboy@10.0.0.61:/tmp
#拉:將遠程10.0.0.61服務器/tmp/oldboy文件拉取到本地/opt/目錄下
[root@m01 ~]# scp -P22 -rp root@10.0.0.61:/tmp/oldboy /opt/
#限速
[root@m01 ~]# scp /opt/1.txt root@172.16.1.31:/tmp
root@172.16.1.31 password: 
test 100% 656MB '83.9MB/s' 00:07 
#限速為8096kb,換算為MB,要除以 8096/8=1024KB=1MB
[root@m01 ~]# scp -rp -l 8096 /opt/1.txt root@172.16.1.31:/tmp
root@172.16.1.31s password: 
test 7% 48MB '1.0MB/s' 09:45 

結論:

1.scp通過ssh協議加密方式進行文件或目錄拷貝。

2.scp連接時的用戶作為為拷貝文件或目錄的權限。

3.scp支持數據推送和拉取,每次都是全量拷貝,效率較低。


Sftp遠程數據傳輸命令

#默認可以通過sftp命令連接sftp服務
sftp root@10.0.0.61
sftp -oPort=52113 root@10.0.0.61 #sftp的特殊端口連接
# sftp使用get下載文件至于本地服務器
sftp> get conf.txt /tmp/
# sftp使用put上傳本地服務器文件至遠程服務器
sftp> put /root/t1.txt /root/

SSH驗證方式

1.基于賬戶密碼遠程登錄

知道服務器的IP端口,賬號密碼,即可通過ssh客戶端命令登陸遠程主機。

? ~ ssh -p22 root@10.0.0.61
root@10.0.0.61 password:
[root@m01 ~]#

2.基于秘鑰遠程登錄

默認情況下,通過ssh客戶端命令登陸遠程服務器,需要提供遠程系統上的帳號與密碼,但為了降低密碼泄露的機率和提高登陸的方便性,建議使用密鑰驗證方式。

SSH遠程管理服務實戰

 

?

1.在服務器上生成非對稱密鑰,使用-t指定密鑰類型, 使用-C指定用戶郵箱

[root@m01 ~]# ssh-keygen -t rsa -C 133411023@qq.com
...
#默認一路回車即可
...

2.將A服務器上的公鑰推送至B服務器

#命令示例: ssh-copy-id [-i [identity_file]] [user@]machine
ssh-copy-id #命令
-i #指定下發公鑰的路徑
[user@] #以什么用戶身份進行公鑰分發(root),如果不輸入,表示以當前系統用戶身份分發公鑰
machine #下發公鑰至那臺服務器, 填寫遠程主機IP地址
#分發秘鑰,[將A服務器的公鑰寫入B服務器~/.ssh/authorized_keys文件中]
[root@m01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.1.41

3.A服務器連接B服務器是無需密碼的,如果能直接連接無需密碼則表示秘鑰已配置成功

#遠程登錄對端主機方式
[root@m01 ~]# ssh root@172.16.1.41
[root@nfs ~]#
#不登陸遠程主機bash,但可在對端主機執行命令
[root@m01 ~]# ssh root@172.16.1.41 "hostname -i"
172.16.1.41

SSH場景實踐

實踐場景,用戶通過Windows/MAC/Linux客戶端連接跳板機免密碼登錄,跳板機連接后端無外網的Linux主機實現免密登錄,架構圖如下。

實踐多用戶登陸一臺服務器無密碼

實踐單用戶登陸多臺服務器免密碼

SSH遠程管理服務實戰

 

?

1.windows客戶端使用Xshell生成秘鑰對,并下發公鑰至跳板機

1) Xshell-->選擇工具->新建密鑰生成工具

SSH遠程管理服務實戰

 

?

2) 生成公鑰對,選擇下一步

SSH遠程管理服務實戰

 

?

3) 填寫秘鑰名稱。秘鑰增加密碼則不建議配置

SSH遠程管理服務實戰

 

?

4) Windows會提示密碼,繼續即可

SSH遠程管理服務實戰

 

?

5) 生成秘鑰后,點擊Xshell->工具->用戶秘鑰管理者->選擇對應秘鑰的屬性

SSH遠程管理服務實戰

 

?

6) 選擇對應秘鑰的公鑰,將其復制

SSH遠程管理服務實戰

 

?

7) 將從WIndows下復制好的公鑰粘貼至跳板機~/.ssh/authorized_keys中,然后測試

[root@m01 ~]# cd ; umask 077; mkdir -p .ssh ;cd .ssh
[root@m01 .ssh]# vim authorized_keys #添加windows公鑰

2.跳板機下發公鑰至后端主機

1) 在跳板機上生成秘鑰對

[root@m01 ~]# ssh-keygen -t rsa -C manager@qq.com

2) 拷貝跳板機上的密鑰至后端主機,如果SSH不是使用默認22端口, 使用-p指定對應端口

[root@m01 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub "-p22 root@172.16.1.31"
[root@m01 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub "-p22 root@172.16.1.41"

3) 在m01管理機上測試是否成功登陸兩臺服務器

[root@m01 ~]# ssh root@172.16.1.41
[root@nfs01 ~]# exit
[root@m01 ~]# ssh root@1172.16.1.31
[root@backup ~]# exit

3.通過跳板機能實現scp拷貝文件免密碼

[root@m01 ~]# scp zls.txt root@172.16.1.31:/tmp
zls.txt 100% 0 0.0KB/s 00:00 
[root@m01 ~]# scp zls.txt root@172.16.1.41:/tmp
zls.txt 100% 0 0.0KB/s 00:00 

4.通過跳板機獲取所有機器的load,CPU,Memory等信息(思考:如果服務器數量多,如何并發查看和分發數據)

[root@m01 ~]# cat all.sh 
#!/usr/bin/bash
[ $# -ne 1 ] && echo "請輸入執行的命令" && exit 1
for i in 31 41
do
 echo "#########172.16.1.$i#####"
 ssh root@172.16.1.$i "$1"
done

5.腳本實現(跳板機)

#!/bin/bash
#jumpserver
lb01=10.0.0.5
lb02=10.0.0.6
web01=10.0.0.7
web02=10.0.0.8
web03=10.0.0.9
nfs=10.0.0.31
backup=10.0.0.41
db01=10.0.0.51
m01=10.0.0.61
zabbix=10.0.0.71
menu(){
 cat <<-EOF
 +-------------------------+
 | 1) lb01 |
 | 2) lb02 |
 | 3) web01 |
 | 4) web02 |
 | 5) web03 |
 | 6) nfs |
 | 7) backup |
 | 8) db01 |
 | 9) m01 |
 | 10) zabbix |
 | h) help |
 +-------------------------+
EOF
}
#菜單函數
menu
#連接函數
connect(){
 ping -c 1 -w 1 $1 &>/dev/null
 if [ $? -eq 0 ];then
 ssh root@$1
 else
 echo -e "33[5;4;40;31m 別連了,我的哥,$2:$1機器都沒開!!!33[0m"
 fi
}
#控制不讓輸入ctrl+c,z
trap "" HUP INT TSTP
while true
do
 read -p "請輸入要連接的主機編號:" num
 case $num in
 1|lb01)
 connect $lb01 lb01
 ;;
 2|lb02)
 connect $lb02 lb02
 ;;
 3|web01)
 connect $web01 web01
 ;;
 4|web02)
 connect $web02 web02
 ;;
 5|web03)
 connect $web03 web03
 ;;
 6|nfs)
 connect $nfs nfs
 ;;
 7|backup)
 connect $backup backup
 ;;
 8|db01)
 connect $db01 db01
 ;;
 9|m01)
 connect $m01 m01
 ;;
 10|zabbix)
 connect $zabbix zabbix
 ;;
 h|help)
 clear
 menu
 ;;
 close)
 break
 ;;
 esac
done

SSH安全優化

SSH作為遠程連接服務,通常我們需要考慮到該服務的安全,所以需要對該服務進行安全方面的配置。

1.更改遠程連接登陸的端口

2.禁止ROOT管理員直接登錄

3.密碼認證方式改為密鑰認證

4.重要服務不使用公網IP地址

5.使用防火墻限制來源IP地址

SSH服務登錄防護需進行如下配置調整,先對如下參數進行了解

Port 6666 # 變更SSH服務遠程連接端口
PermitRootLogin no # 禁止root用戶直接遠程登錄
PasswordAuthentication no # 禁止使用密碼直接遠程登錄
UseDNS no # 禁止ssh進行dns反向解析,影響ssh連接效率參數
GSSAPIAuthentication no # 禁止GSS認證,減少連接時產生的延遲

將如下具體配置添加至/etc/ssh/sshd_config文件中,參數需根據實際情況進行調整

###SSH###
#Port 6666
#PasswordAuthentication no
#PermitRootLogin no
GSSAPIAuthentication no
UseDNS no
###END###

免交互expect[擴展]

1.安裝expect

[root@m01 ~]# yum install -y expect

2.編寫expect腳本

#!/usr/bin/expect

set ip 10.0.0.51

set pass 123456

set timeout 30

spawn ssh root@$ip

expect {

"(yes/no)" {send "yesr"; exp_continue}

"password:" {send "$passr"}

}

expect "root@*" {send "df -hr"}

expect "root@*" {send "exitr"}

expect eof

免交互sshpass[擴展]

1.安裝sshpass

[root@m01 ~]# yum install -y sshpass

2.使用sshpass命令

[root@m01 ~]# sshpass -p 123456 ssh root@10.0.0.51
[option]
-p:指定密碼
-f:從文件中取密碼
-e:從環境變量中取密碼
-P:設置密碼提示

分享到:
標簽:SSH
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定