[toc] SSH遠程管理 ssh功能 SSH是一個安全協議,在進行數據傳輸時,會對數據包進行加密處理,加密後在進行數據傳輸。確保了數據傳輸安全。那SSH服務主要功能有哪些呢? 1.提供遠程連接伺服器的服務 2.對傳輸的數據進行加密 Linux遠程鏈接:ssh協議(加密) telnet(明文) wi ...
目錄
SSH遠程管理
ssh功能
SSH是一個安全協議,在進行數據傳輸時,會對數據包進行加密處理,加密後在進行數據傳輸。確保了數據傳輸安全。那SSH服務主要功能有哪些呢?
1.提供遠程連接伺服器的服務
2.對傳輸的數據進行加密
Linux遠程鏈接:ssh協議(加密) telnet(明文)
windows遠程連接:RDP協議 (remote desktop)
協議 | 埠 |
---|---|
ssh | 22 |
telnet | 23 |
RDP | 3389 |
http | 80 |
https | 443 |
FTP | 20 21 |
POP3 | 110 |
MySQL | 3306 |
Rsync | 873 |
DNS | 53 |
SSH相關命令
SSH有客戶端與服務端,我們將這種模式稱為C/S架構,ssh客戶端支持Windows、Linux、Mac等平臺。在ssh客戶端中包含 ssh|slogin遠程登陸、scp遠程拷貝、sftp文件傳輸、ssh-copy-id秘鑰分發等應用程式。
[root@m01 ~]# ssh [email protected]
ssh:客戶端命令
root:系統用戶名
@:分割用戶和主機
10.0.0.41:主機的IP(可以是公網也可以是內網)
-p:指定埠
Xshell連接不上虛擬機
1.檢查網路
#連誰ping誰
ping 10.0.0.41
tcping 10.0.0.41 22
2.檢查埠
telnet 10.0.0.41 22
tcping 10.0.0.41 22
3.如果可以ping通,埠不通
#檢測sshd服務是否啟動
netstat -lntup|grep 22
#防火牆 selinux
systemctl stop firewalld
setenforce 0
scp命令
# -P 指定埠,預設22埠可不寫
# -r 表示遞歸拷貝目錄
# -p 表示在拷貝文件前後保持文件或目錄屬性不變
# -l 限制傳輸使用帶寬(預設kb)
#推:將本地/tmp/oldboy推送至遠端伺服器10.0.0.61的/tmp目錄,使用對端的root用戶
[root@m01 ~]# scp -P22 -rp /tmp/oldboy [email protected]:/tmp
#拉:將遠程10.0.0.61伺服器/tmp/oldboy文件拉取到本地/opt/目錄下
[root@m01 ~]# scp -P22 -rp [email protected]:/tmp/oldboy /opt/
#限速
[root@m01 ~]# scp /opt/1.txt [email protected]:/tmp
[email protected] password:
test 100% 656MB '83.9MB/s' 00:07
#限速為8096kb,換算為MB,要除以 8096/8=1024KB=1MB
[root@m01 ~]# scp -rp -l 8096 /opt/1.txt [email protected]:/tmp
[email protected] password:
test 7% 48MB '1.0MB/s' 09:45
結論:
1.scp通過ssh協議加密方式進行文件或目錄拷貝。
2.scp連接時的用戶作為為拷貝文件或目錄的許可權。
3.scp支持數據推送和拉取,每次都是全量拷貝,效率較低。
Sftp遠程數據傳輸命令
SSH驗證方式
1.用戶名密碼
[root@m01 ~]# ssh [email protected]
2.密鑰登陸方式
預設情況下,通過ssh客戶端命令登陸遠程伺服器,需要提供遠程系統上的帳號與密碼,但為了降低密碼泄露的機率和提高登陸的方便性,建議使用密鑰驗證方式。
1.管理機生成密鑰對
[root@m01 ~]# 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:P6UswOccoZSLunZ0gekcQ/gDzhFNkH/+I1WHhtwQro8 root@m01
The key's randomart image is:
+---[RSA 2048]----+
| oB. .. |
| = o o. |
| o * oo.o+ . |
| o O+o+o.= . |
| o.**.So .. |
| .+ oB.+ o |
| .. .Eo= = |
| ... . o. . |
| ... . . |
+----[SHA256]-----+
[root@m01 ~]# ll .ssh/
total 8
-rw------- 1 root root 1679 Aug 8 19:07 id_rsa #私鑰(寶塔鎮河妖)
-rw-r--r-- 1 root root 390 Aug 8 19:07 id_rsa.pub #公鑰(天王蓋地虎)
2.管理機推送公鑰
方式一(手動):
#在要連接的伺服器上家目錄下創建.ssh目錄(用哪個用戶連,就創建在哪個家目錄下)
mkdir /root/.ssh
#授權700
chmod 700 /root.ssh
mkdir -m 700 ~/.ssh#一條命令實現
#在m01上查看公鑰文件內容
cat .ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDuxyeePaQr6cI6KMINgW7262dDdfgiiwspNjKYEoEj7cfjpMBPBCpqTO4H5+E8U/GcxsFcj2S2fHlRevPMa8vXYqOvX3O0Xp/C9zNMJrNdT+NdpCnDHRpsF4/Egr0xxKju7LPC1qz/Gu6ksx1VqUmcX2RKrQdV2BYi+pqu/2SQYOUUjKpen0zWxnhjuVmZMV+hPHgs4ILbGwwmYxqY+ldvP0guviQ2CeK1JtQIbP2Q5bBSlMwPxr4P303LUkIBsI3pHRoCMnDT0YI9x9JjdRkkUNjeFoTAE4APsTgICd6nzRBfRRf/VOYk5REuub367yxrOZpfNXOcJ6QCRLYQl6Xn root@m01
#創建公鑰文件authorized_keys
vim ~/.ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDuxyeePaQr6cI6KMINgW7262dDdfgiiwspNjKYEoEj7cfjpMBPBCpqTO4H5+E8U/GcxsFcj2S2fHlRevPMa8vXYqOvX3O0Xp/C9zNMJrNdT+NdpCnDHRpsF4/Egr0xxKju7LPC1qz/Gu6ksx1VqUmcX2RKrQdV2BYi+pqu/2SQYOUUjKpen0zWxnhjuVmZMV+hPHgs4ILbGwwmYxqY+ldvP0guviQ2CeK1JtQIbP2Q5bBSlMwPxr4P303LUkIBsI3pHRoCMnDT0YI9x9JjdRkkUNjeFoTAE4APsTgICd6nzRBfRRf/VOYk5REuub367yxrOZpfNXOcJ6QCRLYQl6Xn root@m01
#授權600
chmod 600 ~/.ssh/authorized_keys
方式二:
#使用命令推送公鑰
[root@m01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
優化
SSH作為遠程連接服務,通常我們需要考慮到該服務的安全,所以需要對該服務進行安全方面的配置。
1.更改遠程連接登陸的埠
2.禁止ROOT管理員直接登錄
3.密碼認證方式改為密鑰認證
4.重要服務不使用公網IP地址
5.使用防火牆限制來源IP地址*
編輯配置文件
vim /etc/ssh/sshd-config
###SSH###
#Port 6666 #埠
#PasswordAuthentication no #密碼
#PermitRootLogin no #root
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 "yes\r"; exp_continue}
"password:" {send "$pass\r"}
}
expect "root@*" {send "df -h\r"}
expect "root@*" {send "exit\r"}
expect eof
免交互sshpass[擴展]
1.安裝sshpass
[root@m01 ~]# yum install -y sshpass
2.使用sshpass命令
[root@m01 ~]# sshpass -p 123456 ssh [email protected]
[option]
-p:指定密碼
-f:從文件中取密碼
-e:從環境變數中取密碼
-P:設置密碼提示
簡易跳板機
#!/bin/bash
if [ $1 == 'web01' -o $1 == '10.0.0.7' ];then
ssh [email protected]
elif [ $1 == 'backup' -o $1 == '10.0.0.41' ];then
ssh [email protected]
elif [ $1 == 'nfs' -o $1 == '10.0.0.31' ];then
ssh [email protected]
elif [ $1 == 'm01' -o $1 == '10.0.0.61' ];then
ssh [email protected] -p 22
fi
~
小結
- 許可權 1:禁止root用戶登錄時,普通用戶許可權700或者屬主屬組統一,
- 公鑰,註意存放路徑,普通用戶家目錄下,公鑰文件授權600