文章目錄
- 一、SSH遠程管理服務的簡介
- 二、常用協議的默認埠
- 1.測驗ssh和telnet服務
- 2.ssh和telnet對比
- 三、SSH中的常用命令
- 1.ssh 簡單使用
- 2.scp遠程檔案傳輸
- 3.sftp命令的傳輸
- 4.ssh-copy-id的使用
- 5.ssh-keygen命令的使用
- 四、SSH遠程登錄驗證
- 1.基于賬戶密碼的方式遠程登錄
- 2.基于秘鑰的方式實作遠程登錄
- 1)生成秘鑰
- 2)推送秘鑰到服務器
- 3)免密登錄檢查免密ip用戶
- 3.免互動sshpass的使用
- 4.免互動expect的使用
- 五、ssh安全優化
- 1.ssh的基礎安全優化
- 2.案例
- 對內網所有的機器進行免密
- 跳板機腳本實作
SSH遠程管理服務簡介
SSH中的常用命令
SSH和其他遠程鏈接工具對比
SSH安全登錄
撰寫跳板機腳本
一、SSH遠程管理服務的簡介
SSH是一個安全協議,在進行資料傳輸時,會對傳輸的資料包進行加密處理,對加密后的資料再進行傳輸,確保了資料傳輸安全,
#那SSH服務主要功能有哪些呢?
1.提供遠程連接服務器的服務
linux默認遠程連接協議: ssh 22
telnet 23
windows默認遠程連接協議:RDP(remote desktop)3389
2.對傳輸進行加密
二、常用協議的默認埠
ssh 22
telnet 23
http 80
https 443
ftp 20 21
RDP 3389
mysql 3306
dns 53
zabbix 10051 10050
elasticsearch 9200 9300
pop3 110
rpcbind 111
rsync 873
redis 6379
1.測驗ssh和telnet服務
#1.安裝telnet
[root@web01 ~]# yum install -y telnet-server
#2.啟動telnet
[root@web01~]#systemctl start telnet.socket
telnet 默認埠是:23
SYNOPSYS
telnet [user@]host [port]
#3.創建普通用戶
[root@nfs ~]# useradd test
[root@nfs ~]# echo 123 | passwd --stdin test
Changing password for user test.
passwd: all authentication tokens updated successfully.
#4.驗證登錄
[d:\~]$ telnet 10.0.0.31 23
Connecting to 10.0.0.31:23...
Connection established.
To escape to local shell, press Ctrl+Alt+].
Kernel 3.10.0-957.el7.x86_64 on an x86_64
nfs login: lhd
Password:
Last login: Tue Feb 18 09:56:30 from ::ffff:10.0.0.1
[lhd@nfs ~]$
2.ssh和telnet對比
telnet: 默認埠是:23
1.不支持root直接登錄,只能用普通用戶
2.明文傳輸資料,安全性不高,
ssh: 默認埠是:22
1.支持root直接登錄
2.所有資料傳遞都是加密的傳輸
三、SSH中的常用命令
ssh
scp
sftp
ssh-copy-id
ssh-keygen
1.ssh 簡單使用
#主要用來遠程登錄和執行命令,ssh默認使用當前用戶登錄,
[root@web01 ~]# ssh -p 22 root@10.0.0.31
ssh #命令
-p #指定埠(在終端無法使用)
22 #指定ssh協議埠
root #連接時使用的用戶(如果不寫用戶,默認使用當前服務器當前用戶)
@ #分隔符
10.0.0.31 #遠端服務器IP
-o StrictHostKeyChecking=no #登錄時跳過驗證身份
# 遠程登錄
ssh [user@]IP
# 遠程執行命令
ssh [user@]IP [commond]
2.scp遠程檔案傳輸
#常用引數:
-P 指定埠,默認是22
-p 保持傳輸檔案屬性不變
-r 表示遞回拷貝目錄
-l 限速
#-l 限速 單位是 kb
[root@nfs ~]# dd if=/dev/zero of=./1.txt bs=1M count=500
[root@nfs tmp]# scp file root@172.16.1.41:/backup/
root@172.16.1.41's password:
file 46% 234MB 14.5MB/s 00:18
#設定速度為10M 10*1024*8=81920
[root@nfs tmp]# scp -l 81920 file root@172.16.1.41:/backup/
#遠程傳輸scp的簡單使用
[root@nfs ~]# scp inotify.sh 172.16.1.8:/opt
inotify.sh 100% 196 26.2KB/s 00:00
[root@nfs ~]#
#scp客戶端命令:
遠程拷貝
#scp類似于rsync:
scp全量
rsync增量
#scp的推和拉:
#推:將本地的/etc目錄推送到backup服務器的/opt目錄下
[root@nfs ~]# scp -r /etc/ root@172.16.1.41:/opt/
#推:將本地的/etc目錄下的檔案推送到backup服務器的/opt目錄下
[root@nfs ~]# scp -r /etc/* root@172.16.1.41:/opt/
#拉:將遠端172.16.1.41服務器的/etc目錄拉取到本地的/opt目錄下
[root@nfs ~]# scp -r root@172.16.1.41:/etc /opt/
3.sftp命令的傳輸
#sftp與rz的對比
sftp:
1.能上傳檔案夾
2.能支持斷點續傳
3.支持上傳大于4G的檔案
rz:
1.不能上傳檔案夾
2.不支持斷點續傳
3.只能上傳小于4G的檔案
#檔案傳輸命令:
[root@web01 ~]# sftp root@10.0.0.31
#查看連接后服務器
sftp> ls
#查看本地服務器
sftp> lls
#兩種操作格式:
拉取到:
#命令 遠程服務器檔案 本地服務器位置
sftp> get 1_nfs.gif ./
放置于:
#命令 本地服務器檔案 遠程服務器位置
sftp> put /data/1_nfs.gif /tmp/
#支持圖形界面的傳輸:
Xftp FileZilla FlashFXP
4.ssh-copy-id的使用
ssh-copy-id復制公鑰至目標服務器,ssh鏈接需要密碼或公鑰,每次鏈接太麻煩,所以可以通過ssh-copy-id進行免密登錄
[root@m01 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@172.16.1.31
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: ".ssh/id_rsa.pub"
The authenticity of host '172.16.1.31 (172.16.1.31)' can't be established.
ECDSA key fingerprint is SHA256:UPOOIxMjGD7QyAGVJAVNX+3Jf65ef33D1aDmML1DBcY.
ECDSA key fingerprint is MD5:5d:7d:49:94:1d:a3:9c:2f:3c:66:db:64:3d:26:ea:90.
Are you sure you want to continue connecting (yes/no)? yes
/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@172.16.1.31's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'root@172.16.1.31'"
and check to make sure that only the key(s) you wanted were added.
[root@m01 ~]#
#修改組態檔傳輸公鑰于指定檔案
[root@backup .ssh]# vim /etc/ssh/sshd_config
AuthorizedKeysFile .ssh/authorized_keys
#注:指示只給當前用戶傳輸公鑰
5.ssh-keygen命令的使用
[root@nfs ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
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:nBdSldxbnEHgOrVdaWPis90aj3ScYDWg+4zYl6PAyzk root@nfs
The key's randomart image is:
+---[RSA 2048]----+
| .o.=o+o|
| . = o.+|
| . .. + X.|
| . o .= O +|
| S .+ * . |
| ..o * *.o|
| + o Boo+|
| .E+ o..* |
| +.. o .|
+----[SHA256]-----+
[root@nfs ~]# cd .ssh/
[root@nfs .ssh]# ll
total 8
-rw------- 1 root root 1675 Apr 23 15:49 id_rsa
-rw-r--r-- 1 root root 390 Apr 23 15:49 id_rsa.pub

四、SSH遠程登錄驗證
1.基于賬戶密碼的方式遠程登錄
#需要知道服務器的IP,埠,賬戶,密碼,才可以通過ssh客戶端連接遠程主機
[root@web01 ~]# ssh -p 22 root@172.16.1.31
root@172.16.1.31's password:
Last login: Tue Feb 18 11:01:54 2020 from 10.0.0.7
[root@nfs ~]#
#密碼設定條件
1.復雜的密碼:yonghu_12@31_sysnum(密碼復雜,不易記)
2.簡單的密碼:1、 123、234、(簡單容易被破解)
3.每臺服務器密碼不一樣
4.密碼三個月更換一次
5.輸入密碼錯誤三次自動鎖死
6.密碼有key,30秒一變或者1分鐘一變
2.基于秘鑰的方式實作遠程登錄
#常用的引數:
-t 指定秘鑰型別 rsa dsa
-C 指定用戶郵箱
1)生成秘鑰
[root@nfs ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
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:nBdSldxbnEHgOrVdaWPis90aj3ScYDWg+4zYl6PAyzk root@nfs
The key's randomart image is:
+---[RSA 2048]----+
| .o.=o+o|
| . = o.+|
| . .. + X.|
| . o .= O +|
| S .+ * . |
| ..o * *.o|
| + o Boo+|
| .E+ o..* |
| +.. o .|
+----[SHA256]-----+
[root@nfs ~]# cd .ssh/
[root@nfs .ssh]# ll
total 8
-rw------- 1 root root 1675 Apr 23 15:49 id_rsa
-rw-r--r-- 1 root root 390 Apr 23 15:49 id_rsa.pub
2)推送秘鑰到服務器
#1.命令推送:
[root@nfs ~]# ssh-copy-id -i .ssh/id_rsa.pub root@172.16.1.31
------
---
[root@nfs ~]# ssh 172.16.1.31
Last login: Tue Feb 18 12:14:27 2020 from 172.16.1.7
[root@nfs ~]#
# 手動復制公鑰
#查看公鑰并復制
[root@nfs ~]# cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCvokaPfSni0HC+tppFKrKuYrSH41D1Y35wetrhtjyrjeyjh3hK7iBhiCCMRc34oBgMh1aMZQekUf8CgUlSwtR3RdgKzKP68L5R/ggmZzGYZ5UOstJd0Vw1I14kZEaBHIF734tdNYbEcv8CXFku1iQzKrwkIs4FX7k3TxogI4XcE+/ root@backup
#把公鑰復制到要連接的服
[root@backup ~]# mkdir .ssh/
[root@backup ~]# vim .ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCvokaPfSni0HC+tppFKrKuYrSH41D1Y3fgnFCZEGR5Xj2y1yil0s3hK7iBhiCCMRc34oBgMh1aMZQekUf8CgUlSwtR3RdgKzKP68L5R/ggmZzGYZ5UOstJd0Vw1I14kZEaBHIF734tdNYbEcv8CXFku1iQzKrwkIs4FX7k3TxogI4XcE+/ root@backup
#檢查檔案修改權限屬性
[root@backup ~]# chmod 700 .ssh/
[root@backup ~]# chmod 600 .ssh/authorized_keys
3)免密登錄檢查免密ip用戶
[root@nfs ~]# cat xunjian.sh
#!/bin/bash
[ $# -ne 1 ] && echo "請輸入執行的命令" && exit 1
for i in 31 41 7
do
echo "######172.16.1.$i#######"
ssh root@172.16.1.$i "$1"
done
[root@m01 ~]#
3.免互動sshpass的使用
1)#安裝sshpass軟體包
[root@nfs .ssh]# yum install -y sshpass
2)#sshpass命令的使用
[root@nfs .ssh]# sshpass -p 1 ssh root@172.16.1.7
sshpass 命令
-p 指定密碼
1 密碼
ssh 連接命令
root 用戶
@ 分隔符
172.16.1.7 主機
3)#sshpass的腳本的撰寫
[root@nfs .ssh]# vim ssh.sh
#!/bin/bash
for num in 41 31 7;do
echo ------ 10.0.0.$num -------
sshpass -p 1 ssh -o StrictHostKeyChecking=no
root@10.0.0.$num df -h
done
4.免互動expect的使用
1)#安裝expect
[root@nfs ~]# yum install -y expect
2)#expect的腳本的撰寫
[root@nfs ~]# cat expect.exp
#!/usr/bin/expect
set ip 10.0.0.7
set pass 1
set timeout 30
spawn ssh root@$ip
expect {
"(yes/no)" {send "yes\r"; exp_continue} "password:" {send "$pass\r"}
}
expect "root@*" {send "df -h\r"}
expect "root@*" {send "exit\r"}
expect
eof
五、ssh安全優化
1.ssh的基礎安全優化
SSH作為遠程連接服務,通常我們需要考慮到服務的安全,所以需要對服務進?安全??的配置,
1、更改遠程登陸的端?
[root@backup ~]# vim /etc/ssh/sshd_config
Port 2222
# 修改sshd服務的默認埠
2、禁?root管理員直接登錄
[root@backup ~]# vim /etc/ssh/sshd_config
- PermitRootLogin no
# 禁止使用root登錄服務器
3、密碼認證?式改為秘鑰認證
[root@backup ~]# vim /etc/ssh/sshd_config
PasswordAuthentication no
# 禁止使用密碼登錄
4、重要服務不適?公?IP地址
[root@web2 ~]# vim /etc/ssh/sshd_config
UseDNS no
[root@web2 ~]# vim /etc/ssh/sshd_config
GSSAPIAuthentication no
# 禁止ssh進行dns反向決議,影響ssh連接效率引數
5、使?防?墻限制來源IP地址
GSSAPIAuthentication no
# 禁止GSS認證,減少連接時產生的延遲
2.案例
撰寫一個跳板機腳本
對內網所有的機器進行免密
# 創建密鑰
[root@m01 ~]# ssh-keygen -t rsa
# 免密登錄
[root@m01 ~]# for i in 7 8 31 41 ;do ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.1.$i; done
跳板機腳本實作
#!/bin/bash
###########################################
# 歡迎登錄
# Linux 12 高級專案:跳板機
# Date: 2021.04.23
# Anther: hzl
###########################################
# 歡迎界面
echo -e "\033[36m ########################################### \033[0m"
echo -e "\033[36m # 歡迎登錄 \033[0m"
echo -e "\033[36m # Linux 12 高級專案:跳板機 \033[0m"
echo -e "\033[36m # Date: 2021.04.23 \033[0m"
echo -e "\033[36m # Anther: hzl \033[0m"
echo -e "\033[36m ########################################### \033[0m"
while true;
do
echo -e "\033[36m \
1> web1 172.16.1.7 \n \
2> web2 172.16.1.8 \n \
3> nfs 172.16.1.31 \n \
4> backup 172.16.1.41 \n \
q> exit 退出登錄 \n \
\033[0m"
read -p "請輸入需要鏈接的主機:" num
echo $num
case $num in
1)
ssh 172.16.1.7
;;
2)
ssh 172.16.1.8
;;
3)
ssh 172.16.1.31
;;
4)
ssh 172.16.1.41
;;
q)
exit;
;;
*)
echo -e "\033[31m 輸入錯誤!!! \033[0m"
;;
esac
done
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/279936.html
標籤:其他
上一篇:我身邊一個35歲+的程式員離職了
下一篇:Web 4-24
