欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報激活碼778899分享:加密安全-openssh服務(wù)

柚子快報激活碼778899分享:加密安全-openssh服務(wù)

http://yzkb.51969.com/

openssh服務(wù)

1、ssh配置

ssh第一次遠程鏈接需要客戶端輸入yes,如下:

# 109節(jié)點第一次通過ssh鏈接106,需要手動輸入yes

root@109:~$ ssh 192.168.31.106

The authenticity of host '192.168.31.106 (192.168.31.106)' can't be established.

ED25519 key fingerprint is SHA256:dZL40Ckk5dkI2n62NcUEU/+Vj6FENiqW/zjd3kZgopU.

This key is not known by any other names.

Are you sure you want to continue connecting (yes/no/[fingerprint])?

當手動輸入yes后,109會獲取到106的公鑰文件:公鑰位置在106節(jié)點的/etc/ssh/下,會有多個.pub結(jié)尾的公鑰文件,109鏈接的時候會隨機一個公鑰文件。

109節(jié)點的獲取106的公鑰會記錄在/root/.ssh/known_hosts中

# 109 /root/.ssh/下kknown_hosts文件中記錄的從106節(jié)點獲取的公鑰文件

root@109:~$ cat .ssh/known_hosts

192.168.31.107 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMzMzsO8NhPpBateNHzqgyiSVC5ZLpTy8Eti4UKgwwAW

192.168.31.107 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBGaR8Q20ByXq3DS1ozmY+8rPmA7MexsccZSLOQFY3h93WQfgj57EA/kuI/MXpBsWsiDUacVH+S71iZ6GfgZu7U8=

192.168.31.106 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILorL+gwGvbbIaFESCZZdc1z161XrYpFOrqaFH9oGRV8

106節(jié)點存放公鑰的位置:

[root@192 ~]# cd /etc/ssh

[root@192 ssh]# ll

total 604

-rw-r--r--. 1 root root 581843 Apr 11 2018 moduli

-rw-r--r--. 1 root root 2276 Apr 11 2018 ssh_config

-rw-------. 1 root root 3907 Apr 11 2018 sshd_config

-rw-r-----. 1 root ssh_keys 227 Dec 16 10:47 ssh_host_ecdsa_key

-rw-r--r--. 1 root root 162 Dec 16 10:47 ssh_host_ecdsa_key.pub

-rw-r-----. 1 root ssh_keys 387 Dec 16 10:47 ssh_host_ed25519_key

-rw-r--r--. 1 root root 82 Dec 16 10:47 ssh_host_ed25519_key.pub

-rw-r-----. 1 root ssh_keys 1679 Dec 16 10:47 ssh_host_rsa_key

-rw-r--r--. 1 root root 382 Dec 16 10:47 ssh_host_rsa_key.pub

禁止首次連接的詢問過程

場景:如果管理的主機較多,不想每個第一次鏈接都輸入yes,只需要修改客戶端配置文件/etc/ssh/ssh_config配置即可:

# 需要將StrictHostKeyChecking前的注釋去掉,將ask改為no即可,如32行

root@109:/etc/ssh$ vim ssh_config

...

28 # CheckHostIP no

29 # AddressFamily any

30 # ConnectTimeout 0

31 # StrictHostKeyChecking ask

32 StrictHostKeyChecking no

...

第二種修改方式:

# 直接使用sed命令進行修改,在客戶端109上執(zhí)行

root@109:~$ sed -i.bak '/StrictHostKeyChecking/s/.*/StrictHostKeyChecking no/' /etc/ssh/ssh_config

禁止root用戶ssh登錄

# 將PermitRootLogin改為no

[jinguc@CRM ~]$ sudo vim /etc/ssh/sshd_config

#LoginGraceTime 2m

PermitRootLogin no

#StrictModes yes

2、格式

# 一般習慣使用第一種

ssh [user@]host [COMMAND]

ssh [-l user] host [COMMAND]

注意:一般使用ssh user@主機IP時,如果省略user,則默認按照當前用戶執(zhí)行鏈接,如:

109連接106

# 109當前用戶為root,省略user則默認使用root登錄,需要輸入106的root密碼

root@109:~$ id

uid=0(root) gid=0(root) groups=0(root) context=system_u:system_r:unconfined_t:s0-s0:c0.c1023

root@109:~$ ssh 192.168.31.106

如果109當前用戶為app,在連接106的時候需要輸入106app的密碼,如果106沒有app用,則連接失敗。

3、常見選項

-p port:遠程服務(wù)器監(jiān)聽的端口

-b 指定連接的源IP

-v 調(diào)試模式

-C 壓縮方式

-X 支持x11轉(zhuǎn)發(fā)

-t 強制偽tty分配,如:ssh -t remoteserver1 ssh -t remoteserver2 ssh

remoteserver3

-o option 如:-o StrictHostKeyChecking=no

-i 指定私鑰文件路徑,實現(xiàn)基于key驗證,默認使用文件: ~/.ssh/id_dsa,

~/.ssh/id_ecdsa, ~/.ssh/id_ed25519,~/.ssh/id_rsa等

范例:-t參數(shù)

場景:如果公司有臺服務(wù)器106節(jié)點,無法直接通過公網(wǎng)登錄,只能通過107進行登錄,你只能通過109登錄107,正常登錄方式是先通過109ssh登錄107,在通過107ssh登錄106,太繁瑣了,可以通過- t參數(shù)直接通過109登錄106,只不過是需要依次輸入107、106的密碼,如下:

root@109:~$ ssh -t 192.168.31.107 ssh -t 192.168.31.106

root@192.168.31.107's password:

root@192.168.31.106's password:

Last login: Sun Mar 3 21:52:53 2024 from 192.168.31.107

# 查看IP地址,已經(jīng)登錄到目標106主機了

[root@192 ~]# ip a |grep 192.168.31

inet 192.168.31.106/24 brd 192.168.31.255 scope global noprefixroute ens192

范例:遠程執(zhí)行命令

[root@centos6 ~]#ssh 10.0.0.8 "sed -i.bak

'/StrictHostKeyChecking/s/.*/StrictHostKeyChecking no/' /etc/ssh/ssh_config"

root@10.0.0.8's password:

[root@centos6 ~]#

范例:在遠程主機運行本地shell腳本

# 當前主機為106

[root@192 shell]# hostname -I

192.168.31.106

# 腳本內(nèi)容,獲取當前主機IP

[root@192 shell]# cat test.sh

#! /bin/bash

hostname -I

# 在107上執(zhí)行106的腳本,當前主機為106

[root@192 shell]# ssh 192.168.31.107 /bin/bash < test.sh

root@192.168.31.107's password:

192.168.31.107

4、查看遠程登錄失敗記錄-lastb

通過lastb可以查看從服務(wù)端(遠程端)登錄服務(wù)器的登錄記錄,這里的記錄全部是錯誤的記錄,正常登錄記錄通過last進行查看。

例如:

在109節(jié)點未遠程登錄107的時候,可以查看107的記錄

[root@192 ~]# lastb

btmp begins Sat Mar 2 23:57:47 2024

通過109節(jié)點登錄107節(jié)點

# 109節(jié)點通過xfsd用戶登錄107,由于不知道密碼,三次登錄失敗

root@109:~/.ssh$ ssh xfsd@192.168.31.107

xfsd@192.168.31.107's password:

Permission denied, please try again.

xfsd@192.168.31.107's password:

Permission denied, please try again.

xfsd@192.168.31.107's password:

root@109:~/.ssh$

通過lastb查看109的登錄記錄,有三次登錄記錄

[root@192 ~]# lastb

xfsd ssh:notty 192.168.31.109 Sun Mar 3 07:06 - 07:06 (00:00)

xfsd ssh:notty 192.168.31.109 Sun Mar 3 07:06 - 07:06 (00:00)

xfsd ssh:notty 192.168.31.109 Sun Mar 3 07:06 - 07:06 (00:00)

btmp begins Sun Mar 3 07:06:17 2024

通過命令查看記錄登錄信息的文件

# 該文件為二進制文件,無法直接打開

[root@192 ~]# ll /var/log/btmp

-rw-------. 1 root utmp 1152 Mar 3 07:06 /var/log/btmp

# 可以通過lastb -f +文件打開

[root@192 ~]# cd /var/log

[root@192 log]# ll btmp

-rw-------. 1 root utmp 1152 Mar 3 07:06 btmp

[root@192 log]# lastb -f btmp

xfsd ssh:notty 192.168.31.109 Sun Mar 3 07:06 - 07:06 (00:00)

xfsd ssh:notty 192.168.31.109 Sun Mar 3 07:06 - 07:06 (00:00)

xfsd ssh:notty 192.168.31.109 Sun Mar 3 07:06 - 07:06 (00:00)

btmp begins Sun Mar 3 07:06:17 2024

例:

查看鏈接107節(jié)失敗次數(shù)最多的前三個IP

查看鏈接失敗的列表

# 查看鏈接失敗情況,可以看到一共涉及4個IP鏈接

[root@192 log]# lastb -f btmp

gxy ssh:notty 192.168.31.103 Sun Mar 3 07:47 - 07:47 (00:00)

gxy ssh:notty 192.168.31.105 Sun Mar 3 07:41 - 07:41 (00:00)

gxy ssh:notty 192.168.31.105 Sun Mar 3 07:41 - 07:41 (00:00)

gxy ssh:notty 192.168.31.105 Sun Mar 3 07:41 - 07:41 (00:00)

gxy ssh:notty 192.168.31.105 Sun Mar 3 07:41 - 07:41 (00:00)

gxy ssh:notty 192.168.31.105 Sun Mar 3 07:41 - 07:41 (00:00)

gxy ssh:notty 192.168.31.105 Sun Mar 3 07:41 - 07:41 (00:00)

app ssh:notty 192.168.31.106 Sun Mar 3 07:37 - 07:37 (00:00)

app ssh:notty 192.168.31.106 Sun Mar 3 07:37 - 07:37 (00:00)

app ssh:notty 192.168.31.109 Sun Mar 3 07:36 - 07:36 (00:00)

app ssh:notty 192.168.31.109 Sun Mar 3 07:36 - 07:36 (00:00)

app ssh:notty 192.168.31.109 Sun Mar 3 07:36 - 07:36 (00:00)

xfsd ssh:notty 192.168.31.109 Sun Mar 3 07:06 - 07:06 (00:00)

xfsd ssh:notty 192.168.31.109 Sun Mar 3 07:06 - 07:06 (00:00)

xfsd ssh:notty 192.168.31.109 Sun Mar 3 07:06 - 07:06 (00:00)

btmp begins Sun Mar 3 07:06:17 2024

# 統(tǒng)計行數(shù),一共17條

[root@192 log]# lastb -f btmp |wc -l

17

統(tǒng)計鏈接失敗次數(shù)最多的前三個IP

# 前三的IP分別為109的6次,105的6次,106的2次

[root@192 log]# lastb -f /var/log/btmp |awk '{print $3}'|sort |uniq -c |sort -nr |head -3

6 192.168.31.109

6 192.168.31.105

2 192.168.31.106

5、基于密鑰對驗證(免密登錄)

原理:在本機生成公鑰和私鑰,然后將公鑰傳到需要鏈接的主機中,

1、首先在客戶端生成一個對密鑰(ssh-keygen)

2、并將客戶端的公鑰ssh-copy-id拷貝到服務(wù)器

3、當客戶端再次發(fā)送一個鏈接請求,包括IP、用戶名

4、服務(wù)端得到客戶端的請求后,會到authorized_keys中查找,如果有響應(yīng)的IP和用戶,就會隨機生成一個字符串。

5、服務(wù)端將使用客戶端拷貝過來的公鑰進行加密,然后發(fā)送給客戶端。

6、得到服務(wù)端發(fā)過來的消息后,客戶端會使用私鑰進行解密,然后將解密后的字符串發(fā)送給服務(wù)端。

7、服務(wù)端接受到客戶端發(fā)過來的字符串后,跟之前的字符串進行對比,如果一致,就允許免密碼登錄。

登錄方式:(A免密登錄B)

在客戶端(A)生成密鑰對:

# 一般只需要執(zhí)行ssh-keygen,rsa是加密方式,-P表示是否給密鑰設(shè)置密碼

ssh-keygen -t rsa [-p 'password'] [-f "~/.ssh/id_rsa"]

把公鑰文件傳輸至遠端服務(wù)器(B)對應(yīng)用戶的家目錄

ssh-copy-id [-i [identity_file]] [user@]host

例:

192.168.31.105要免密登錄192.168.31.106

在105節(jié)點生成密鑰對

[root@192 ~]# ll .ssh

ls: 無法訪問.ssh: 沒有那個文件或目錄

[root@192 ~]# ssh-keygen

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:8pQeqUoI69iP764H75G81zb2b7ZBSMviJv2TopkonPE root@192.168.31.105

The key's randomart image is:

+---[RSA 2048]----+

| |

| |

| . |

| = o |

|. . S + . |

| ooo . O o . |

|...*= o.* .. |

|o.+oE=.=*.o o. |

|..+XX.++ +o=o. |

+----[SHA256]-----+

# 已經(jīng)生成了密鑰對

[root@192 ~]#

總用量 8

-rw-------. 1 root root 1679 3月 10 22:44 id_rsa

-rw-r--r--. 1 root root 401 3月 10 22:44 id_rsa.pub

傳至106節(jié)點

# 傳之前在106節(jié)點查看下在root目錄下是否存在.ssh目錄

[root@192 ~]# ll .ssh

ls: cannot access .ssh: No such file or directory

# 在105節(jié)點進行傳輸公鑰文件到106節(jié)點

[root@192 ~]# ssh-copy-id root@192.168.31.106

/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"

The authenticity of host '192.168.31.106 (192.168.31.106)' can't be established.

ECDSA key fingerprint is SHA256:lpOhqq5qjk87p7qYvFOeOfWH7ii8ed3sJsvygU00Dv8.

ECDSA key fingerprint is MD5:d0:f9:5d:5c:76:f3:29:00:2c:1f:35:d4:80:01:a0:5f.

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@192.168.31.106's password:

Number of key(s) added: 1

Now try logging into the machine, with: "ssh 'root@192.168.31.106'"

and check to make sure that only the key(s) you wanted were added.

查看106節(jié)點是否收到105的公鑰文件

[root@192 ~]# cat .ssh/authorized_keys

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDyb/VlU1BKSvyHCbr7D1INT6kG29areHQlojcn84L9F

ReavOcpWYCaQDSNw1fVX0ybvvKM4Du2flIb5GTEEnxMN/Jtrb7riabfKy3bzXRo2yxC6ouSObyZK+gA7B

NgZ313yWFez1JTXBC6WzD7ayDV9mkRStD0oHxt/9hSQKTEtRpSYTiJt3meLlQ/juMu9sFpGftNFDzObm/

HJBy7UOm3SezkLhX26mpQQki+Qu2wKcH12b0423Gt3rnMRXqZCN5VWF6ZA6GmKSERUkq1o8c+3AKGwxTF

Tvhkoe68+2uDGi/XUssqx9XT3axCLm6z0cQ9kDH+RUduwO37OqXu6PNN

root@192.168.31.105

登錄驗證

在105節(jié)點登錄106節(jié)點

# 105節(jié)點已經(jīng)可以免密登錄106節(jié)點了

[root@192 ~]# ssh 192.168.31.106

Last login: Sun Mar 10 10:03:37 2024 from gxymacbook-pro

[root@192 ~]# hostname -I

192.168.31.106

批量執(zhí)行腳本

105節(jié)點已做106與107的免密,現(xiàn)在在105節(jié)點執(zhí)行腳本,是其在106與107節(jié)點均能執(zhí)行105節(jié)點的腳本。

# 105節(jié)點的腳本內(nèi)容,就是一個獲取IP地址的腳本

[root@192 ~]# cat shell/ip.sh

#! /bin/bash

hostname -I

# 在105上批量執(zhí)行,是其能在106與107上執(zhí)行該腳本

[root@192 ~]# while read ip ;do ssh $ip bash < /root/shell/ip.sh; done

192.168.31.106 192.168.31.183

192.168.31.107

對私鑰口令進行加密

場景:如果免密做的是多臺,如100臺,服務(wù)器私鑰(105的私鑰)變得比較重要,如果一旦私鑰被人竊?。ㄈ缙平鈘oot密碼后竊?。?,那么就相當于破解100臺的密碼,所以對私鑰進行加密就變得格外需要。

加密口令

ssh-keygen -p

**注意:**如果已經(jīng)生成密鑰對了是否可以在進行加密,是可以的,只是對密鑰加密的時候會提示你重新加密而已。

例:

場景:對上述實驗中105節(jié)點的密鑰進行加密。

# 對105節(jié)點的私鑰進行加密

[root@192 ~]# ssh-keygen -p

Enter file in which the key is (/root/.ssh/id_rsa): # 提示要密碼的私鑰,直接回車

Enter new passphrase (empty for no passphrase): # 提示輸入加密的密碼,第一次加密顯示沒有密碼

Enter same passphrase again: # 再次輸入密碼

Your identification has been saved with the new passphrase. # 加密完成

驗證

# 登錄106節(jié)點進行驗證,輸入設(shè)置的私鑰密碼

[root@192 ~]# ssh 192.168.31.106

Enter passphrase for key '/root/.ssh/id_rsa':

Last login: Sun Mar 10 23:29:07 2024 from 192.168.31.105

[root@192 ~]# hostname -I

192.168.31.106

# 登錄107節(jié)點驗證

[root@192 ~]# ssh 192.168.31.107

Enter passphrase for key '/root/.ssh/id_rsa':

Last login: Sun Mar 10 10:03:57 2024 from 192.168.31.161

[root@192 ~]# hostname -I

192.168.31.107

**思考:**當初通過密鑰對(免密)的方式進行加密就是為了方便以后管理多臺服務(wù)器時不在重復(fù)輸入密碼,但對密鑰加密就又變成交互式的每次都需要輸入密碼了,這相當于又回到從前的尷尬場景了。如何解決這個問題呢?可以通過代理的方式管理,這樣就不需要每次輸入私鑰的密碼了,又能解決私鑰被盜用后直接使用的風險。

啟動代理

# 啟用代理

[root@192 ~]# ssh-agent bash

# 鑰匙通過命令添加給代理

[root@192 ~]# ssh-add

Enter passphrase for /root/.ssh/id_rsa:

Identity added: /root/.ssh/id_rsa (/root/.ssh/id_rsa)

驗證:

# 登錄106、107已經(jīng)可以不在輸入密碼了

[root@192 ~]# ssh 192.168.31.106

Last login: Mon Mar 11 01:48:29 2024 from 192.168.31.105

[root@192 ~]# hostname -I

192.168.31.106

[root@192 ~]# ssh 192.168.31.107

Last login: Mon Mar 11 01:49:52 2024 from 192.168.31.105

[root@192 ~]# hostname -I

192.168.31.107

**存在的問題:**代理進程是隨終端的,當終端退出后代理進程就不再了,如果想批量管理,還是需要輸入密鑰的加密密碼。就是每次想批量管理,必須執(zhí)行下命令(啟動代理):ssh- agent bash

# 當前IP

[root@192 ~]# hostname -I

192.168.31.105

# 執(zhí)行退出命令,發(fā)現(xiàn)退出后IP仍是105,這是因為執(zhí)行第一個exit是退出了代理工具

[root@192 ~]# exit

exit

[root@192 ~]# hostname -I

192.168.31.105

# 代理進程已經(jīng)不在了

[root@192 ~]# ps aux |grep agent

root 25300 0.0 0.0 112724 988 pts/0 S+ 13:59 0:00 grep --color=auto agent

# 再次跳轉(zhuǎn)106,仍需要輸入105密鑰的加密密碼

[root@192 ~]# ssh 192.168.31.106

Enter passphrase for key '/root/.ssh/id_rsa':

Last login: Mon Mar 11 01:56:46 2024 from 192.168.31.105

[root@192 ~]# hostname -I

192.168.31.106

**場景:**我們有時候不是固定在某一臺電腦進行遠程服務(wù)器的,可能在辦公環(huán)境的不同電腦,也可能在家里的電腦,也可能借用其他同事的電腦,每次登錄輸入賬號密碼顯然是不安全的,此時我們只需要在自己電腦上生成密鑰對,將公鑰上傳到服務(wù)器,將私鑰拷貝到U盤中,需要登錄的以后調(diào)用U盤中的私鑰即可實現(xiàn)登錄。如果在別人的電腦上留的有私有文件,一定記得在使用完成后徹底刪除該私鑰文件。

![在這里插入圖片描述](https://img- blog.csdnimg.cn/direct/41030b53c9054464a5b908e6b2f5abda.png#pic_center)

![在這里插入圖片描述](https://img- blog.csdnimg.cn/direct/b37ee042f4ff4217b53fb5165452918e.png#pic_center)

![在這里插入圖片描述](https://img- blog.csdnimg.cn/direct/168b76b81dd54b79b63bcd4a4669b2a2.png#pic_center) ![在這里插入圖片描述](https://img- blog.csdnimg.cn/direct/9d244328a83e433fa574ea202329118c.png#pic_center)

可以點擊保存文件

![在這里插入圖片描述](https://img- blog.csdnimg.cn/direct/df6fcf52a0114b98a5f7d2032ab36a52.png#pic_center)

此處可以將密鑰導(dǎo)出后點擊完成 ![在這里插入圖片描述](https://img- blog.csdnimg.cn/direct/b34bcfa471884934a1227025673db0aa.png#pic_center) 上傳導(dǎo)出后的公鑰到服務(wù)器

通過xftp上傳id_rsa_2048.pub到105服務(wù)器,上傳后復(fù)制到authorized_keys文件中,如果沒有該文件就創(chuàng)建一個。

# 105節(jié)點目錄下并沒有authorized_keys文件

[root@192 ~]# ll .ssh

總用量 12

-rw-------. 1 root root 1766 3月 11 13:45 id_rsa

-rw-r--r--. 1 root root 401 3月 10 22:44 id_rsa.pub

-rw-r--r--. 1 root root 352 3月 10 23:06 known_hosts

# 上傳公鑰后直接將公鑰內(nèi)容輸入到authorized_keys(該文件為新建文件,因為本機沒有,如果存在追加即可)

[root@192 ~]# cat id_rsa_2048.pub > .ssh/authorized_keys

# 到此公鑰導(dǎo)入完成

[root@192 ~]# ll .ssh

總用量 16

-rw-r--r--. 1 root root 380 3月 11 14:21 authorized_keys

-rw-------. 1 root root 1766 3月 11 13:45 id_rsa

-rw-r--r--. 1 root root 401 3月 10 22:44 id_rsa.pub

-rw-r--r--. 1 root root 352 3月 10 23:06 known_hosts

# 修改權(quán)限為600,authorized_keys的權(quán)限為600

[root@192 .ssh]# chmod 600 authorized_keys

# 查看公鑰

[root@192 ~]# cat .ssh/authorized_keys

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAtqAHuVR26OpUv5gUnrpwOEzuzM2Svcd2EFc1GvZWfct9DzKJiPSJ+9ew9qzSnwbiSdTs+YFQTUQUiOWkIH8aAVy2FGMooiMu07nhZakC6+6iIB1Ybj2Lco9sPJc8KJdo7H/o5bdbFY3PFPtj1OD/kjfteBvVBZIOpP1+e6GDDMz157Rhxn6AF3NTmtWgYragKirF52ZdZstwvjleItqxQ2KLf/HqndSpjkf9mXu77c7z9kcSDuPt6abAs01xdiAKKsIkT6uUbyohKexCbLsKDvoMZf9XOu1IoBDgnQP46Wd5ZEnlewjChRoP4stzqlYKrVLNqh3UVSi7h8oiLOMNbQ==[root@192 ~]#

進行密鑰登錄驗證

將xshell中原來的基于用戶密碼的105節(jié)點刪除,點擊新增

![在這里插入圖片描述](https://img- blog.csdnimg.cn/direct/a724cec6f4f1450aae504a2e8f35f3aa.png#pic_center) 輸入IP,用戶名輸入root,方法選擇公鑰登錄Public Key ![在這里插入圖片描述](https://img- blog.csdnimg.cn/direct/428f9a2cba5f4da4be8b7b5fa4bca5e1.png#pic_center) 點確定后雙擊105節(jié)點進行登錄,此時會進行用戶身份驗證,用戶密鑰選擇剛導(dǎo)出來的密鑰文件,然后點擊確定即可正常登錄。

6、基于expect實現(xiàn)基于ssh的key部署

場景:如果項目上分配了100臺主機加一個跳板機(linux系統(tǒng)),需要在跳板機上對這100臺主機做免密配置,如果將跳板機的公鑰手動一臺一臺拷貝到這100臺主機,顯然不是明智的選擇,耗時耗力,這個時候我們就可以腳本實現(xiàn)一件部署。這里我以三臺主機為例進行演示。

如:新分了三臺主機,分別為:192.168.31.106、192.168.31.107、192.168.31.109,其中106節(jié)點是跳板機,需要對107與109做免密配置。

注意:操作之前一定要檢查下106節(jié)點是否存在/root/.ssh目錄,如果存在最后將其刪除,因為里邊可能會有已生成的密鑰對,如果存在密鑰對,腳本有可能執(zhí)行不成功,執(zhí)行前必須要刪除密鑰對,最后將.ssh目錄刪除。要保證107與109節(jié)點的密碼一致,例子中的密碼為Qwerdf2…

hosts.txt內(nèi)容:

[root@192 shell]# cat hosts.txt

192.168.31.107

192.168.31.109

[root@192 shell]# ll

total 8

-rw-r--r--. 1 root root 30 Mar 14 09:38 hosts.txt

-rwxr-xr-x. 1 root root 651 Mar 14 10:12 push_ssh_key.sh

編寫腳本

vim push_ssh_key.sh

#!/bin/bash

#set -x

# 這里邊的密碼是107、109節(jié)點的密碼

PASS="Qwerdf12.."

hosts_file="hosts.txt"

# 安裝 expect 包

rpm -q expect &> /dev/null || yum -y install expect &> /dev/null

# 生成 SSH 密鑰,-t rsa:指定密鑰的類型為RSA。RSA是一種非對稱加密算法,

# -P "":指定私鑰的密碼為空。在這里,我們將私鑰設(shè)置為空密碼,這意味著生成的私鑰不會有密碼保護,可以直接使用而無需輸入密碼。

# -f /root/.ssh/id_rsa:指定生成的私鑰文件的路徑和名稱。在這里,私鑰將被保存在 /root/.ssh/ 目錄下,并命名為 id_rsa。

ssh-keygen -t rsa -P "" -f /root/.ssh/id_rsa &> /dev/null && echo "ssh key is created"

# 讀取 hosts.txt 文件中的 IP 地址,并進行 SSH 免密鑰驗證

while read IP ; do

expect &> /dev/null <

set timeout 20

spawn ssh-copy-id -i /root/.ssh/id_rsa.pub root@$IP

expect {

"yes/no" { send "yes\n";exp_continue }

"password" { send "$PASS\n" }

}

expect eof

EOF

echo "$IP is ready"

done < "$hosts_file"

驗證:

腳本執(zhí)行完成后在106節(jié)點登錄107、109節(jié)點驗證。

# 驗證可以正常從106節(jié)點跳轉(zhuǎn)到107、109節(jié)點

[root@192 ~]# ssh 192.168.31.107

Last login: Thu Mar 14 10:17:23 2024 from 192.168.31.106

[root@192 ~]# hostname -I

192.168.31.107

[root@192 ~]# exit

logout

Connection to 192.168.31.107 closed.

[root@192 ~]# ssh 192.168.31.109

Last login: Thu Mar 14 22:17:13 2024 from 192.168.31.106

root@109:~$ hostname -I

192.168.31.109

7、其他ssh工具—scp

方式:

scp [options] [user@]host:/sourcefile /destpath

scp [options] /sourcefile [user@]host:/destpath

scp [options] [user@]host1:/sourcetpath [user@]host2:/destpath

常用選項:

-C 壓縮數(shù)據(jù)流

-r 遞歸復(fù)制

-p 保持原文件的屬性信息

-q 靜默模式

-P PORT 指明remote host的監(jiān)聽的端口

8、其他ssh工具—rsync

rsync工具可以基于ssh和rsync協(xié)議實現(xiàn)高效率的遠程系統(tǒng)之間復(fù)制文件,使用安全的shell連接做為傳輸方式,比scp更快,基于增量數(shù)據(jù)同步,即只復(fù)制兩方不同的文件,此工具來自于rsync包。

**注意:**通信兩端主機都需要安裝 rsync軟件。

rsync -av /etc server1:/tmp #復(fù)制目錄和目錄下文件

rsync -av /etc/ server1:/tmp #只復(fù)制目錄下文件

常見選項

-n 模擬復(fù)制過程

-v 顯示詳細過程

-r 遞歸復(fù)制目錄樹

-p 保留權(quán)限

-t 保留修改時間戳

-g 保留組信息

-o 保留所有者信息

-l 將軟鏈接文件本身進行復(fù)制(默認)

-L 將軟鏈接文件指向的文件復(fù)制

-u 如果接收者的文件比發(fā)送者的文件較新,將忽略同步

-z 壓縮,節(jié)約網(wǎng)絡(luò)帶寬

-a 存檔,相當于-rlptgoD,但不保留ACL(-A)和SELinux屬性(-X)

--delete 源數(shù)據(jù)刪除,目標數(shù)據(jù)也自動同步刪除

安裝rsync

[root@192 ~]# yum install -y rsync

# 查看版本

[root@192 data]# rsync --version

rsync version 3.1.2 protocol version 31

Copyright (C) 1996-2015 by Andrew Tridgell, Wayne Davison, and others.

Web site: http://rsync.samba.org/

Capabilities:

64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints,

socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,

append, ACLs, xattrs, iconv, symtimes, prealloc

rsync comes with ABSOLUTELY NO WARRANTY. This is free software, and you

are welcome to redistribute it under certain conditions. See the GNU

General Public Licence for details.

8.1、不同主機之間的數(shù)據(jù)同步

例:

在192.168.31.106同步文件到192.168.31.109,目錄名都為data,106與107已做免密,并且兩個節(jié)點都安裝了rsync,同步前我們先生成一些測試數(shù)據(jù)。

# 192.168.31.106

[root@192 data]# dd if=/dev/zero of=test1 bs=1M count=10

[root@192 data]# dd if=/dev/zero of=test2 bs=1M count=10

[root@192 data]# dd if=/dev/zero of=test3 bs=1M count=10

[root@192 data]# ll

total 30720

-rw-r--r--. 1 root root 10485760 Mar 14 22:27 test1

-rw-r--r--. 1 root root 10485760 Mar 14 22:28 test2

-rw-r--r--. 1 root root 10485760 Mar 14 22:28 test3

# 192.168.31.107 data目錄為空

[root@192 data]# ll

total 0

進行數(shù)據(jù)同步

# 在106節(jié)點執(zhí)行

[root@192 data]# rsync -av /data 192.168.31.107:/data

sending incremental file list

data/

data/test1

data/test2

data/test3

sent 31,465,191 bytes received 77 bytes 20,976,845.33 bytes/sec

total size is 31,457,280 speedup is 1.00

# 在107節(jié)點查看同步數(shù)據(jù)

[root@192 data]# ll

total 0

drwxr-xr-x. 2 root root 45 Mar 14 22:28 data

[root@192 data]# tree

.

└── data

├── test1

├── test2

└── test3

1 directory, 3 files

**注意:**從同步過程來看,106節(jié)點同步的命令中寫的是/data目錄,并不是/data/,所以同步的時候會將目錄及目錄下的文件全部同步過去。

我們將107節(jié)點的/data目錄下的所有內(nèi)容刪掉從新同步。

# 刪除107節(jié)點/data下的所有內(nèi)容

[root@192 data]# rm -rf *

[root@192 data]# ll

total 0

# 再次同步,在106上執(zhí)行,這次目錄改為/data/

[root@192 data]# rsync -av /data/ 192.168.31.107:/data

sending incremental file list

./

test1

test2

test3

sent 31,465,178 bytes received 76 bytes 12,586,101.60 bytes/sec

total size is 31,457,280 speedup is 1.00

# 107節(jié)點查看同步數(shù)據(jù)

[root@192 data]# ll

total 30720

-rw-r--r--. 1 root root 10485760 Mar 14 22:27 test1

-rw-r--r--. 1 root root 10485760 Mar 14 22:28 test2

-rw-r--r--. 1 root root 10485760 Mar 14 22:28 test3

[root@192 data]# tree

.

├── test1

├── test2

└── test3

0 directories, 3 files

**注意:**從同步過程來看,106節(jié)點同步是用的是/data/,是加了“/”的,可以看到本次同步結(jié)果是直接將106 data目錄下的所有數(shù)據(jù)同步到了107節(jié)點,并未包含106的data目錄。目錄后加“/”與不加是有區(qū)別的。

只同步已更新的文件-u參數(shù)

更新test1文件,test2、test3保持不變

# 106節(jié)點

# 在test1文件后追加一個空行,發(fā)現(xiàn)多了一個字節(jié)

[root@192 data]# echo >> test1

[root@192 data]# ll

total 47104

-rw-r--r--. 1 root root 10485761 Mar 14 22:54 test1

-rw-r--r--. 1 root root 10485760 Mar 14 22:28 test2

-rw-r--r--. 1 root root 10485760 Mar 14 22:28 test3

再次同步驗證

# 106同步

[root@192 data]# rsync -auv /data/ 192.168.31.107:/data

sending incremental file list

test1

sent 14,274 bytes received 19,505 bytes 22,519.33 bytes/sec

total size is 31,457,281 speedup is 931.27

# 107

[root@192 data]# ll

total 30724

-rw-r--r--. 1 root root 10485761 Mar 14 22:54 test1

-rw-r--r--. 1 root root 10485760 Mar 14 22:28 test2

-rw-r--r--. 1 root root 10485760 Mar 14 22:28 test3

從106的同步過程看,只同步了test1。

8.2、單臺主機內(nèi)部不同目錄之間的數(shù)據(jù)同步

如:

主機內(nèi)部同步/home/gxy/test數(shù)據(jù)到/home/gxy/test2

[gxy@106-server ~]$ sudo rsync -avz /home/gxy/test/ /home/gxy/test2

sending incremental file list

./

01/

01/a.txt

01/b.txt

02/

02/c.txt

sent 319 bytes received 88 bytes 814.00 bytes/sec

total size is 29 speedup is 0.07

8.3、 rsync的日志記錄

rsync 是一個用于在 Unix 和類 Unix 系統(tǒng)之間同步文件和目錄的工具,它本身沒有直接提供日志記錄功能。然而,你可以使用一些技巧來實現(xiàn)日志記錄:

通過重定向輸出到日志文件 :你可以將 rsync 的輸出重定向到一個文件中,以便記錄同步過程中的輸出信息。例如: rsync -avz /source/path/ /destination/path/ > rsync_log.txt

這將把 rsync 命令的輸出保存到名為 rsync_log.txt 的文件中。

使用-log-file 選項:rsync 提供了 -log-file 選項,你可以使用它來指定一個日志文件來記錄同步過程中的輸出信息。例如: rsync -avz --log-file=rsync_log.txt /source/path/ /destination/path/

這會將 rsync 命令的輸出記錄到名為 rsync_log.txt 的文件中。

結(jié)合tee 命令:tee 命令可以將輸出既發(fā)送到標準輸出,又保存到文件中。這可以在命令行中實現(xiàn)比較復(fù)雜的日志記錄需求。例如: rsync -avz /source/path/ /destination/path/ | tee rsync_log.txt

這將會在終端上顯示 rsync 命令的輸出,并將其同時追加到名為 rsync_log.txt 的文件中。

9、ssh服務(wù)配置

配置文件:/etc/ssh/sshd_config(服務(wù)端)

常見參數(shù):

Port 22 # 服務(wù)端口

#AddressFamily any

#ListenAddress 0.0.0.0 # 默認情況下22端口會監(jiān)聽在當前主機的所有IP,每個IP的22端口都可

# 以鏈接,如果在生成中某臺服務(wù)器有兩個IP,一個外網(wǎng)IP,一個內(nèi)網(wǎng)IP,而你只想讓內(nèi)網(wǎng)IP通過ssh端口

# 進行鏈接,可以把這個地址綁定在內(nèi)網(wǎng)IP上,格式:ListenAddress 內(nèi)網(wǎng)IP

#ListenAddress ::

# 這個三個是私鑰路徑

#HostKey /etc/ssh/ssh_host_rsa_key

#HostKey /etc/ssh/ssh_host_ecdsa_key

#HostKey /etc/ssh/ssh_host_ed25519_key

# Ciphers and keying

#RekeyLimit default none

# Logging

#SyslogFacility AUTH

#LogLevel INFO

# Authentication:

#LoginGraceTime 2m # 寬限期2分鐘,如果在登錄的時候該輸入密碼或者輸入yes的時候,什么也不

# 操作,但是這個時間也是占用系統(tǒng)資源的,如果打開該選項,2分鐘無上述任何操作會斷開鏈接(僅在鏈接

# 過程中)

#PermitRootLogin prohibit-password

PermitRootLogin yes # 是否允許root用戶登錄

#StrictModes yes # 檢查.ssh/文件的所有者,權(quán)限等,如果不符合要求就不讓登錄

#MaxAuthTries 6 # 最多允許連幾次,這地方寫的是6次,其實連接3次就會退出,

# 通過man sshd_config查看官方解釋:指定每個連接允許的最大身份驗證嘗試次數(shù)。

# 一旦失敗次數(shù)達到一半值,會記錄其他故障。 默認值為 6。

#MaxSessions 10 # 同一連接的最大會話數(shù),如一個窗口是一個連接,如果是復(fù)制終端后成了兩個窗口,

# 仍然是一個鏈接,只不過是兩個會話,也就是最多只能復(fù)制10個窗口終端

#PubkeyAuthentication yes # 基于key驗證

#PermitEmptyPasswords no # 空密碼連接

PasswordAuthentication yes # 基于用戶名和密碼連接

GatewayPorts no # 網(wǎng)關(guān)功能

# 這兩個選項配合起來使用,實現(xiàn)多長時間不操作會斷開,第一個是每隔多少秒檢查一次,第二個是檢查幾

# 次,如每隔10s檢查一次,一共檢查三次,如果三次都沒有任何操作,就會斷開這個ssh連接。

ClientAliveInterval 10 #單位:秒

ClientAliveCountMax 3 #默認3

UseDNS yes # 提高速度可以改成no

GSSAPIAuthentication yes # 提高速度可以改成no

MaxStartups # 未認證連接最大值,默認是10,就是ssh+IP后該輸入密碼沒有輸入,一直不操作

# 以下可以限制可登錄用戶的辦法:

AllowUsers user1 user2 user3

DenyUsers user1 user2 user3

AllowGroups g1 g2

DenyGroups g1 g2

范例:設(shè)置ssh 空閑60s 自動注銷

Vim /etc/ssh/sshd_config

ClientAliveInterval 60

ClientAliveCountMax 0

Service sshd restart

#注意:新開一個連接才有效

范例:解決ssh登錄緩慢的問題

vim /etc/ssh/sshd_config

UseDNS no

GSSAPIAuthentication no

systemctl restart sshd

范例:在 ubuntu 上啟用root 遠程ssh登錄

#修改sshd服務(wù)配置文件

vim /etc/ssh/sshd_config

#PermitRootLogin prohibit-password 注釋掉此行

PermitRootLogin yes 修改為下面形式

systemctl restart sshd

ssh服務(wù)的最佳實踐

建議使用非默認端口 禁止使用protocol version 1 限制可登錄用戶 設(shè)定空閑會話超時時長 利用防火墻設(shè)置ssh訪問策略 僅監(jiān)聽特定的IP地址 基于口令認證時,使用強密碼策略,比如:tr -dc A-Za-z0-9_ < /dev/urandom | head -c 12| xargs 使用基于密鑰的認證 禁止使用空密碼 禁止root用戶直接登錄 限制ssh的訪問頻度和并發(fā)在線數(shù) 經(jīng)常分析日志

10、ssh其他相關(guān)工具

10.1、掛載遠程ssh目錄-sshfs

由EPEL源提供,目前CentOS8 還沒有提供,可以利用ssh協(xié)議掛載遠程目錄。

[root@centos7 ~]#yum install fuse-sshfs

[root@centos7 ~]#sshfs 10.0.0.8:/data /mnt

[root@centos7 ~]#df /mnt

Filesystem 1K-blocks Used Available Use% Mounted on

10.0.0.8:/data 52403200 398576 52004624 1% /mnt

10.2、自動登錄ssh工具-sshpass

由EPEL源提供,ssh登陸不能在命令行中指定密碼。sshpass的出現(xiàn),解決了這一問題。sshpass用于非交互SSH的密碼驗證,一般用在sh腳本中,無須再次輸入密碼(本機known_hosts文件中有的主機才能生效)。它允許你用 -p 參數(shù)指定明文密碼,然后直接登錄遠程服務(wù)器,它支持密碼從命令行、文件、環(huán)境變量中讀取。

格式:

sshpass [option] command parameters

常見選項

-p password #后跟密碼它允許你用 -p 參數(shù)指定明文密碼,然后直接登錄遠程服務(wù)器

-f filename #后跟保存密碼的文件名,密碼是文件內(nèi)容的第一行。

-e #將環(huán)境變量SSHPASS作為密碼

范例:

109節(jié)點通過無交互的方式登錄106節(jié)點

# 109節(jié)點安裝sshpass

root@109:~$ yum -y install sshpass

# 確定下是否需要存在106的公鑰,通過連接發(fā)現(xiàn)109并沒有106的公鑰,正常登錄是需要輸入yes進行交互

root@109:~$ ssh 192.168.31.106

The authenticity of host '192.168.31.106 (192.168.31.106)' can't be established.

ED25519 key fingerprint is SHA256:dZL40Ckk5dkI2n62NcUEU/+Vj6FENiqW/zjd3kZgopU.

This key is not known by any other names.

Are you sure you want to continue connecting (yes/no/[fingerprint])?

# 為了保險可以將109的 .ssh 目錄刪除

root@109:~$ rm -rf .ssh

# 通過sshpass非交互式登錄106節(jié)點,登錄成功,用的是-p參數(shù)

root@109:~$ sshpass -p Qwerdf12.. ssh -o StrictHostKeyChecking=no root@192.168.31.106

Warning: Permanently added '192.168.31.106' (ED25519) to the list of known hosts.

Last login: Sun Mar 17 09:07:35 2024 from 192.168.31.103

[root@106-server ~]# hostname -I

192.168.31.106

# 通過sshpass非交互式登錄106節(jié)點,登錄成功,用的是-f參數(shù)

root@109:~$ echo "Qwerdf12.." > pass.txt

root@109:~$ sshpass -f pass.txt ssh -o StrictHostKeyChecking=no root@192.168.31.106

Last login: Wed Mar 20 03:58:37 2024 from 192.168.31.109

[root@106-server ~]# hostname -I

192.168.31.106

# 通過sshpass非交互式登錄106節(jié)點,登錄成功,通過將密碼寫入變量中實現(xiàn)

root@109:~$ sshpass -e ssh root@192.168.31.106 hostname -I

192.168.31.106

**注意:**109節(jié)點必須先配置epel源,因為該工具來自于epel源。

10.2.1、手動免密

從109節(jié)點免密跳轉(zhuǎn)到106節(jié)點

# 109節(jié)點獲取密鑰對

root@109:~$ ssh-keygen

Generating public/private ed25519 key pair.

Enter file in which to save the key (/root/.ssh/id_ed25519):

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /root/.ssh/id_ed25519

Your public key has been saved in /root/.ssh/id_ed25519.pub

The key fingerprint is:

SHA256:nqhw2NBnedz5wJ2TH+rsxLGzppjZdLzRd8SOcz8hwwc root@109

The key's randomart image is:

+--[ED25519 256]--+

| |

| |

| |

| . o o o E . |

| . . + S = B o o|

| + o + . = @ B |

| o o . o . @ O *|

| o . * =.= =o|

| . + o+* o|

+----[SHA256]-----+

拷貝公鑰到目標主機

# 109操作

root@109:~$ ssh-copy-id 192.168.31.106

/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_ed25519.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@192.168.31.106's password:

Number of key(s) added: 1

Now try logging into the machine, with: "ssh '192.168.31.106'"

and check to make sure that only the key(s) you wanted were added.

登錄驗證

root@109:~$ ssh 192.168.31.106

Last login: Wed Apr 3 10:29:41 2024 from 192.168.31.109

[root@106-server ~]# hostname -I

192.168.31.106

10.2.2、批量免密

范1:批量部署多臺主機基于key驗證腳本(實現(xiàn)多臺免密登錄)腳本詳解參考:shell/腳本實例/批量部署多臺主機基于key驗證腳本

部署前驗證

# 驗證前刪除得到各節(jié)點公鑰

root@109:~$ rm -rf .ssh

# 驗證登錄,發(fā)現(xiàn)在登錄前都必須登錄驗證并輸入密碼

root@109:~$ ssh 192.168.31.105

The authenticity of host '192.168.31.105 (192.168.31.105)' can't be established.

ED25519 key fingerprint is SHA256:ve+VVuYsG6n7WbsSgO56Ju+XI3S/u3RUjBxPVFLPmps.

This key is not known by any other names.

Are you sure you want to continue connecting (yes/no/[fingerprint])? ^C

root@109:~$ ssh 192.168.31.106

The authenticity of host '192.168.31.106 (192.168.31.106)' can't be established.

ED25519 key fingerprint is SHA256:dZL40Ckk5dkI2n62NcUEU/+Vj6FENiqW/zjd3kZgopU.

This key is not known by any other names.

Are you sure you want to continue connecting (yes/no/[fingerprint])? ^C

root@109:~$ ssh 192.168.31.107

The authenticity of host '192.168.31.107 (192.168.31.107)' can't be established.

ED25519 key fingerprint is SHA256:FdLvo9PG4PIyq5xRgMoZuY4frP3WaUdliSIeWXjMppM.

This key is not known by any other names.

Are you sure you want to continue connecting (yes/no/[fingerprint])? ^C

編寫腳本文件

root@109:~/shell$ vim sshpass.sh

#!/bin/bash

# 將多行字符串轉(zhuǎn)換為數(shù)組

# set -x

IFS=$'\n' read -d '' -r -a hosts_array <<< "

192.168.31.105

192.168.31.106

192.168.31.107

"

PASS=Qwerdf12..

ssh-keygen -P "" -f /root/.ssh/id_rsa &> /dev/null

# 恢復(fù)rpm包檢查安裝代碼,根據(jù)實際環(huán)境選擇適當?shù)陌芾砥?/p>

if ! command -v sshpass &> /dev/null; then

yum -y install sshpass &> /dev/null || apt-get update && apt-get install -y sshpass

fi

for i in "${hosts_array[@]}"; do

sshpass -p "$PASS" ssh-copy-id -o StrictHostKeyChecking=no -i /root/.ssh/id_rsa.pub "$i" 2>&1 | tee -a /var/log/sshpass.log &

done

wait

給執(zhí)行權(quán)限并執(zhí)行腳本

root@109:~/shell$ chmod +x sshpass.sh

root@109:~/shell$ ./sshpass.sh

再次驗證登錄情況

# 驗證已經(jīng)可以正常登錄各節(jié)點主機

root@109:~$ ssh 192.168.31.105

Last login: Wed Mar 20 22:05:35 2024 from 192.168.31.109

[root@192 ~]# exit

登出

Connection to 192.168.31.105 closed.

root@109:~$ ssh 192.168.31.106

Last login: Wed Mar 20 10:04:45 2024 from 192.168.31.109

[root@106-server ~]# exit

logout

Connection to 192.168.31.106 closed.

root@109:~$ ssh 192.168.31.107

[root@192 ~]# hostname -I

192.168.31.107

范例2:批量部署多臺主機基于key驗證腳本(實現(xiàn)多臺免密登錄)腳本詳解參考:shell/腳本實例/批量部署多臺主機基于key驗證腳本,第二種寫法

創(chuàng)建hosts文件

root@109:~/shell$ vim /root/shell/hosts

192.168.31.105

192.168.31.106

192.168.31.107

編寫腳本

root@109:~/shell$ vim sshpass.sh

#!/bin/bash

PASS=Qwerdf12..

# 檢查并安裝sshpass(取消注釋)

rpm -q sshpass &> /dev/null || yum -y install sshpass &> /dev/null

# 從hosts文件讀取IP地址列表到數(shù)組

IFS=$'\n' read -d '' -r -a hosts_array <<< "$(cat /root/shell/hosts)"

# 生成無密碼的SSH密鑰對

ssh-keygen -P "" -f /root/.ssh/id_rsa &> /dev/null

# 并發(fā)執(zhí)行ssh-copy-id命令(這里假設(shè)你確實需要并發(fā)處理,但請根據(jù)實際情況調(diào)整并發(fā)數(shù)量)

for i in "${hosts_array[@]}"; do

sshpass -p "$PASS" ssh-copy-id -o StrictHostKeyChecking=no -i /root/.ssh/id_rsa.pub $i &> /dev/null &

done

# 等待所有后臺任務(wù)完成

wait

登錄驗證

root@109:~$ ssh 192.168.31.106

Last login: Wed Mar 20 10:07:39 2024 from 192.168.31.109

[root@106-server ~]# hostname -I

192.168.31.106 192.168.31.183

[root@106-server ~]# exit

logout

Connection to 192.168.31.106 closed.

root@109:~$ ssh 192.168.31.105

Last failed login: Wed Mar 20 22:38:55 CST 2024 from 192.168.31.105 on ssh:notty

There were 7 failed login attempts since the last successful login.

Last login: Wed Mar 20 22:07:28 2024 from 192.168.31.109

[root@192 ~]# hostname -I

192.168.31.105

[root@192 ~]# exit

登出

Connection to 192.168.31.105 closed.

root@109:~$ ssh 192.168.31.107

Last login: Wed Mar 20 10:07:47 2024 from 192.168.31.109

[root@192 ~]# hostname -I

192.168.31.107

驗證登錄成功

10.2.3、批量修修改主機root密碼為隨機密碼通

編寫腳本:在109節(jié)點編寫腳本:vim change_root_password.sh

#! /bin/bash

HOSTS="

192.168.31.106

192.168.31.107

"

PASS=Qwerdf12..

rm -rf /root/shell/pass.txt

for i in $HOSTS; do

{

# 利用openssl生成隨機密碼,大小寫字母+數(shù)字

NEW_PASS=`openssl rand -base64 9`

# 這條命令主要是考慮密碼強度不夠,在生成的隨機密碼后拼接了“ @ ”特殊符號

# NEW_PASS=`openssl rand -base64 9 | tr -d '\n' | tr -d '\r' | sed 's/$/@/'`

sshpass -p $PASS ssh -o StrictHostKeyChecking=no $i "echo $NEW_PASS |passwd --stdin root"

echo $i:$NEW_PASS >> /root/shell/pass.txt

}&

done

執(zhí)行腳本

root@109:~/shell$ ./change_root_password.sh

Changing password for user root.

passwd: all authentication tokens updated successfully.

Changing password for user root.

passwd: all authentication tokens updated successfully.

查看新生成的密碼

root@109:~/shell$ cat pass.txt

192.168.31.107:Q05DriBUeXCZ

192.168.31.106:xAvQN1zgo7ub

進行登錄驗證

root@109:~/shell$ ssh 192.168.31.106

root@192.168.31.106's password:

Last failed login: Tue Apr 2 22:51:53 EDT 2024 from 192.168.31.103 on ssh:notty

There were 2 failed login attempts since the last successful login.

Last login: Tue Apr 2 22:48:21 2024 from 192.168.31.103

[root@106-server ~]# hostname -I

192.168.31.107

10.3、輕量化自動化運維工具 pssh

EPEL源中提供了多個自動化運維工具,該工具來自與pssh

pssh:基于python編寫,可在多臺服務(wù)器上執(zhí)行命令的工具,也可實現(xiàn)文件復(fù)制,提供了基于 ssh和scp的多個并行工具,項目:http://code.google.com/p/parallel-ssh/, CentOS8上目前沒提 供 pdsh:Parallel remote shell program,是一個多線程遠程shell客戶端,可以并行執(zhí)行多個遠程 主機上的命令。 可使用幾種不同的遠程shell服務(wù),包括rsh,Kerberos IV和ssh,項目: https:// pdsh.googlecode.com/ mussh:Multihost SSH wrapper,是一個shell腳本,允許使用命令在多個主機上通過ssh執(zhí)行命 令。 可使用ssh-agent和RSA/DSA密鑰,以減少輸入密碼,項目:http://www.sourceforge.net/p rojects/mussh

注意:pssh默認是基于key驗證的,如果想基于傳統(tǒng)的密碼驗證,需要加上-A參數(shù)。

pssh命令選項如下:

-H:主機字符串,內(nèi)容格式”[user@]host[:port]”

-h file:主機列表文件,內(nèi)容格式”[user@]host[:port]”

-A:手動輸入密碼模式

-i:每個服務(wù)器內(nèi)部處理信息輸出

-l:登錄使用的用戶名

-p:并發(fā)的線程數(shù)【可選】

-o:輸出的文件目錄【可選】

-e:錯誤輸出文件【可選】

-t:TIMEOUT 超時時間設(shè)置,0無限制【可選】

-O:SSH的選項

-P:打印出服務(wù)器返回信息

-v:詳細模式

--version:查看版本

安裝

# pssh是基于epel源的,所有安裝之前必須先配置好epel源

yum install -y pssh

-A 參數(shù) 手動輸入密碼模式

范例:在109上通過pssh命令遠程在106上執(zhí)行命令

# 不用-A參數(shù)直接使用會報錯,pssh默認是基于key驗證的

root@109:~/shell$ pssh -H 192.168.31.106 hostname -I

[1] 15:00:35 [FAILURE] 192.168.31.106 Exited with error code 255

# 加上-A參數(shù),輸入106的密碼,執(zhí)行成功

root@109:~/shell$ pssh -H 192.168.31.106 -A hostname -I

Warning: do not enter your password if anyone else has superuser

privileges or access to your account.

Password:

[1] 15:01:04 [SUCCESS] 192.168.31.106

如果109之前并沒有鏈接過106,也就是說109沒有106的公鑰,通過-A參數(shù)也是無法執(zhí)行成功的,如下:

# 第一次鏈接需要輸入也是,這個地方直接C掉

root@109:~$ ssh 192.168.31.106

The authenticity of host '192.168.31.106 (192.168.31.106)' can't be established.

ED25519 key fingerprint is SHA256:dZL40Ckk5dkI2n62NcUEU/+Vj6FENiqW/zjd3kZgopU.

This key is not known by any other names.

Are you sure you want to continue connecting (yes/no/[fingerprint])? ^C

# 通過pssh進行遠程執(zhí)行命令驗證,直接報錯了

root@109:~$ pssh -H 192.168.31.106 -A hostname -I

Warning: do not enter your password if anyone else has superuser

privileges or access to your account.

Password:

[1] 15:17:29 [FAILURE] 192.168.31.106 Exited with error code 255

為了解決這個問題,我們需要修改下ssh的配置文件ssh_config,如下:

vim /etc/ssh/ssh_config

# 將這一行注釋取消,修改ask為no

# StrictHostKeyChecking ask

# 修改后如下:

StrictHostKeyChecking no

驗證是否可行

# 驗證前先刪除109的.ssh目錄

cd /root

rm -rf .ssh

root@109:~$ pssh -H 192.168.31.107 -A hostname -I

Warning: do not enter your password if anyone else has superuser

privileges or access to your account.

Password:

[1] 15:33:37 [SUCCESS] 192.168.31.107

通過pssh在多主機執(zhí)行命令

root@109:~$ pssh -H "192.168.31.107 192.168.31.106" -A hostname -I

Warning: do not enter your password if anyone else has superuser

privileges or access to your account.

Password:

[1] 15:55:29 [SUCCESS] 192.168.31.106

[2] 15:55:29 [SUCCESS] 192.168.31.107

注意:這個地方只讓輸入一個密碼,也就意味著兩臺主機的密碼必須一致。不過可以通過免密后進行。

-i 參數(shù) 每個服務(wù)器內(nèi)部處理信息輸出

# 正常不加 -i 參數(shù)的情況,不顯示詳細信息,只顯示主機的狀態(tài)(成功或者失?。?/p>

root@109:~$ pssh -H "192.168.31.107 192.168.31.106" -A hostname

Warning: do not enter your password if anyone else has superuser

privileges or access to your account.

Password:

[1] 17:27:22 [SUCCESS] 192.168.31.106

[2] 17:27:22 [SUCCESS] 192.168.31.107

# 加 -i 參數(shù)后會顯示詳細信息

root@109:~$ pssh -H "192.168.31.107 192.168.31.106" -A -i hostname

Warning: do not enter your password if anyone else has superuser

privileges or access to your account.

Password:

[1] 17:23:34 [SUCCESS] 192.168.31.107

192.168.31.107

[2] 17:23:34 [SUCCESS] 192.168.31.106

106-server

基于key驗證

# 基于key驗證首先需要做109到106和107的免密,免密步驟參考10.2.1與10.2.2部分內(nèi)容,不需要-A了

root@109:~$ pssh -H 192.168.31.106 -i hostname

[1] 22:42:28 [SUCCESS] 192.168.31.106

106-server

-h 參數(shù) file:主機列表文件

通過pssh實現(xiàn)多主機上執(zhí)行命令,如果主機較多可以用這種方法

# 已做從109到106的免密了

root@109:~/test$ pssh -h /root/test/hosts -i hostname

[1] 22:54:21 [SUCCESS] 192.168.31.106

106-server

[2] 22:54:21 [SUCCESS] 192.168.31.107

192.168.31.107

批量創(chuàng)建用戶賬號

# 免密已做

root@109:~/test$ pssh -h /root/test/hosts -i useradd app

[1] 23:00:22 [SUCCESS] 192.168.31.106

[2] 23:00:22 [SUCCESS] 192.168.31.107

# 驗證是否創(chuàng)建成功

root@109:~/test$ pssh -h /root/test/hosts -i getent passwd app

[1] 23:01:50 [SUCCESS] 192.168.31.106

app:x:1002:1002::/home/app:/bin/bash

[2] 23:01:50 [SUCCESS] 192.168.31.107

app:x:1001:1001::/home/app:/bin/bash

批量創(chuàng)建目錄

# 109節(jié)點

root@109:~/test$ pssh -h /root/test/hosts -i mkdir /root/20240403

[1] 23:06:53 [SUCCESS] 192.168.31.106

[2] 23:06:53 [SUCCESS] 192.168.31.107

# 如果有一臺主機存在該目錄,則會報錯

root@109:~/test$ pssh -h /root/test/hosts -i mkdir /root/20240403

[1] 23:06:05 [SUCCESS] 192.168.31.106

[2] 23:06:05 [FAILURE] 192.168.31.107 Exited with error code 1

Stderr: mkdir: cannot create directory ‘/root/20240403’: File exists

# 查看創(chuàng)建好的目錄是否存在

root@109:~/test$ pssh -h /root/test/hosts -i ls -l /root

[1] 23:07:16 [SUCCESS] 192.168.31.106

total 4

drwxr-xr-x. 2 root root 6 Apr 3 11:07 20240403

-rw-------. 1 root root 1761 Dec 16 10:47 anaconda-ks.cfg

[2] 23:07:16 [SUCCESS] 192.168.31.107

total 4

drwxr-xr-x. 2 root root 6 Apr 3 11:07 20240403

-rw-------. 1 root root 1508 Jan 2 08:57 anaconda-ks.cfg

-o 參數(shù) -e 參數(shù)(重定向)

場景:可以將執(zhí)行結(jié)果輸出到某個指定的文件中,可以將正確的日志和錯誤的日志分開存放不同路徑

# 在109上執(zhí)行l(wèi)l操作,發(fā)現(xiàn)有報錯,我們查詢下日志,-0是正確日志存放位置,-e是錯誤的日志存放位置

root@109:~/test$ pssh -h /root/test/hosts -o /opt -e /data ls -l /root/shell

[1] 10:24:36 [FAILURE] 192.168.31.107 Exited with error code 2

[2] 10:24:36 [SUCCESS] 192.168.31.106

# 查詢錯誤日志發(fā)現(xiàn)是107上并無該目錄

root@109:/opt$ cat /data/192.168.31.107

ls: cannot access /root/shell: No such file or directory

# 在107上進行驗證,發(fā)現(xiàn)并無shell目錄

[root@192 ~]# ll

total 4

drwxr-xr-x. 2 root root 6 Apr 3 11:07 20240403

-rw-------. 1 root root 1508 Jan 2 08:57 anaconda-ks.cfg

**注意:**每次操作的日志會覆蓋上次的日志,就是每次只會顯示最近的一次輸出日志。

變量必須用單引號引起來(雙引號不行)

# 不加引號顯示本機的變量

root@109:~$ pssh -h /root/test/hosts -o /opt -i echo $HOSTNAME

[1] 10:39:20 [SUCCESS] 192.168.31.106

109

[2] 10:39:20 [SUCCESS] 192.168.31.107

109

# 雙引號仍顯示的是本機的

root@109:~$ pssh -h /root/test/hosts -o /opt -i "echo $HOSTNAME"

[1] 10:39:35 [SUCCESS] 192.168.31.106

109

[2] 10:39:35 [SUCCESS] 192.168.31.107

109

# 單引號顯示是目標主機的

root@109:~$ pssh -h /root/test/hosts -o /opt -i 'echo $HOSTNAME'

[1] 10:39:45 [SUCCESS] 192.168.31.106

106-server

[2] 10:39:45 [SUCCESS] 192.168.31.107

192.168.31.107

**注意:*不僅僅是變量有這種情況, 也是需要用單引號引起來的。

10.4、pscp.pssh命令

pscp.pssh功能是將本地文件批量復(fù)制到遠程主機

包來源pssh,來源于epel源

root@109:~$ rpm -ql pssh

/usr/bin/pnuke

/usr/bin/prsync

/usr/bin/pscp.pssh

/usr/bin/pslurp

/usr/bin/pssh

pscp.pssh選項

-v 顯示復(fù)制過程

-r 遞歸復(fù)制目錄

范例:遠程批量執(zhí)行本地腳本

# 109的腳本內(nèi)容

root@109:~/shell$ cat test.sh

#! /bin/bash

hostname

# 給腳本執(zhí)行權(quán)限

root@109:~/shell$ chmod +x test.sh

# 將本地的腳本復(fù)制到遠程主機的shell目錄中

root@109:~/shell$ pscp.pssh -h /root/shell/hosts -v /root/shell/test.sh /root/test/

[1] 11:42:25 [SUCCESS] 192.168.31.106

[2] 11:42:25 [SUCCESS] 192.168.31.107

# 查看拷貝結(jié)果

root@109:~/shell$ pssh -h /root/shell/hosts -i ls -l /root/test/

[1] 11:44:13 [SUCCESS] 192.168.31.106

total 4

drwxr-xr-x. 2 root root 32 Mar 26 04:34 01

drwxr-xr-x. 2 root root 19 Mar 26 04:35 02

-rwxr-xr-x. 1 root root 22 Apr 3 23:43 test.sh

[2] 11:44:13 [SUCCESS] 192.168.31.107

total 4

-rwxr-xr-x. 1 root root 22 Apr 3 23:43 test.sh

# 批量執(zhí)行遠程主機的腳本

root@109:~/shell$ pssh -h /root/shell/hosts -i /root/test/test.sh

[1] 14:57:05 [SUCCESS] 192.168.31.106

106-server

[2] 14:57:05 [SUCCESS] 192.168.31.107

192.168.31.107

10.5、pslurp命令

pslurp功能是將遠程主機的文件批量復(fù)制到本地

pslurp [-vAr] [-h hosts_file] [-H [user@]host[:port]] [-l user] [-p par][-o

outdir] [-e errdir] [-t timeout] [-O options] [-x args] [-X arg] [-L localdir]

remote local(本地名)

包來源pssh,來源于epel源

root@109:~$ rpm -ql pssh

/usr/bin/pnuke

/usr/bin/prsync

/usr/bin/pscp.pssh

/usr/bin/pslurp

/usr/bin/pssh

pslurp選項

-L 指定從遠程主機下載到本機的存儲的目錄,local是下載到本地后的名稱

-r 遞歸復(fù)制目錄

**原理:**從目標主機拉到本地的目錄的過程中,如拉取目標主機文件到本地/opt下,首先它會先在/opt目錄下創(chuàng)建一個目錄,目錄名為遠程主機的IP地址,然后將文件放入到這個目錄下,如果不這樣做的話,它從多個主機拉取相同文件就會重復(fù),最后只剩下一個文件,并且你不清楚這個文件是那臺主機過來的。

# 測試在有相同文件名的文件是去創(chuàng)建同名目錄

root@109:/opt$ ll

total 4

-rw-r--r--. 1 root root 8 Apr 4 15:36 192.168.31.106

drwx--x--x. 4 root root 28 Feb 4 15:37 containerd

root@109:/opt$ mkdir 192.168.31.106

mkdir: cannot create directory ‘192.168.31.106’: File exists

范例:

批量下載目標主機的文件

# 批量下載目標服務(wù)器的redhat-releas文件至/opt下,并更名為version,發(fā)現(xiàn)上述報錯了,參考原理

root@109:~$ pslurp -h /root/shell/hosts -L /opt /etc/redhat-release version

[1] 15:24:54 [FAILURE] 192.168.31.106 Exited with error code 1

[2] 15:24:54 [FAILURE] 192.168.31.107 Exited with error code 1

# 查看opt有相同名的文件,導(dǎo)致的系統(tǒng)無法創(chuàng)建該目錄,繼而報錯

root@109:~$ ll /opt

total 8

-rw-r--r--. 1 root root 11 Apr 4 10:39 192.168.31.106

-rw-r--r--. 1 root root 15 Apr 4 10:39 192.168.31.107

drwx--x--x. 4 root root 28 Feb 4 15:37 containerd

# 將同名的文件刪除后再次測試成功

root@109:/opt$ rm -rf 192*

root@109:/opt$ pslurp -h /root/shell/hosts -L /opt /etc/redhat-release version

[1] 15:41:34 [SUCCESS] 192.168.31.106

[2] 15:41:34 [SUCCESS] 192.168.31.107

# 查看是否拉取成功

root@109:/opt$ ll

total 0

drwxr-xr-x. 2 root root 21 Apr 4 15:41 192.168.31.106

drwxr-xr-x. 2 root root 21 Apr 4 15:41 192.168.31.107

drwx--x--x. 4 root root 28 Feb 4 15:37 containerd

root@109:/opt$ tree

.

├── 192.168.31.106

│ └── version

├── 192.168.31.107

│ └── version

└── containerd

├── bin

└── lib

5 directories, 2 files

11、dropbear

由Matt Johnston所開發(fā)的Secure Shell軟件。Dropbear是一個相對較小的SSH服務(wù)器和客戶端。它運行在一個基于POSIX的各種平臺。 Dropbear是開源軟件,在麻省理工學(xué)院式的許可證。 Dropbear是特別有用的“嵌入”式的Linux(或其他Unix)系統(tǒng),如無線路由器,期望在存儲器與運算能力有限的情況下取代OpenSSH,尤其是嵌入式系統(tǒng)。

dropbear可以在升級openssh的時候進行安裝,這樣即使在sshd服務(wù)掛掉也不會影響通過ssh user@ip -p dropbear端口 這種方式連接

官網(wǎng):http://matt.ucc.asn.au/dropbear/dropbear.html

范例:編譯安裝dropbear

# 安裝相關(guān)包:

root@109:~/package$ yum install gcc zlib-devel

# 下載

root@109:~/package$ wget http://matt.ucc.asn.au/dropbear/releases/dropbear-

2019.78.tar.bz2

# 解壓

root@109:~/package$ tar -xf dropbear-2022.83.tar.bz2

root@109:~/package$ cd dropbear-2022.83

root@109:~/package/dropbear-2022.83$ ./configure --prefix=/apps/dropbear --sysconfdir=/etc/dropbear

root@109:~/package/dropbear-2022.83$ make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp"

root@109:~/package/dropbear-2022.83$ make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" install

root@109:/$ tree /apps/dropbear/

/apps/dropbear/

├── bin

│ ├── dbclient

│ ├── dropbearconvert

│ ├── dropbearkey

│ └── scp

├── sbin

│ └── dropbear

└── share

└── man

├── man1

│ ├── dbclient.1

│ ├── dropbearconvert.1

│ └── dropbearkey.1

└── man8

└── dropbear.8

6 directories, 9 files

# 配置環(huán)境變量

root@109:~/package/dropbear-2022.83$ echo 'PATH=/apps/dropbear/sbin:/apps/dropbear/bin:$PATH' > /etc/profile.d/dropbear.sh

# 在/etc下創(chuàng)建dropbear目錄,這個是上邊執(zhí)行configure時定義存放私鑰的路徑,需要手動創(chuàng)建

root@109:~$ mkdir /etc/dropbear

# 生成私鑰文件

root@109:~/package/dropbear-2022.83$ pwd

/root/package/dropbear-2022.83

root@109:~/package/dropbear-2022.83$ /root/package/dropbear-2022.83/dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key -s 2048

Generating 2048 bit rsa key, this may take a while...

Public key portion is:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCIaryyBV+bIvz7EEGHAEjymPxsEwD30uXHhpVRDcCxpr0319ntZoew9XqDnJBpYuYDspfm3G/jomBOHeIPZHYPYJEcAMl+HPc0r9WnU2qQavXhl0WOmItgz84C3LL3yBPIrG0DteEjwQgY8ywZTajmUCaeM3nveiZNKcLBaplEKErKjhT62/TvYkIbBKzWA9VD8T0HXgVLv0pigIZQ8oOLFLpLsMz8BI96XtFXf++QHDvNp41EggibZacR5/jqkdWVCItkLoFBI6PG/OzkvrBFhsudjUtCWR7iQu56QC7qxVMPD02O1+Wvkd2PaiyFmOqEDeEdyip5rlzf0Vchn06p root@109

Fingerprint: SHA256:q32uJsSd/3OQnvryETfuh9X2jhCPSAAG0CI6JyLo9JQ

# 查看私鑰已生成

root@109:~/package/dropbear-2022.83$ tree /etc/dropbear

/etc/dropbear

└── dropbear_rsa_host_key

# 啟動服務(wù),因為dropbear默認也是啟動22端口,和系統(tǒng)openssh的沖突了,手動指定端口,如2222,先查看2222端口是在使用

root@109:~$ ss -ntl

State Recv-Q Send-Q Local Address:Port Peer Address:Port

LISTEN 0 128 *:22 *:*

LISTEN 0 128 :::22 :::*

LISTEN 0 128 :::23 :::*

# 前臺啟動dropbear

dropbear -p :2222 -FE

# 后臺運行

[root@centos8 ~]#dropbear -p :2222

# 后臺啟動(一般生產(chǎn)環(huán)境會采用后臺啟動的方式),2222已經(jīng)處于監(jiān)聽狀態(tài)

root@109:/apps/dropbear/sbin$ ss -ntl

State Recv-Q Send-Q Local Address:Port Peer Address:Port

LISTEN 0 128 *:2222 *:*

LISTEN 0 128 *:22 *:*

LISTEN 0 128 :::2222 :::*

LISTEN 0 128 :::22 :::*

LISTEN 0 128 :::23 :::*

# 測試,從105節(jié)點進行連接測試,已經(jīng)成功了

[root@192 ~]# ssh 192.168.31.109 -p 2222

The authenticity of host '[192.168.31.109]:2222 ([192.168.31.109]:2222)' can't be established.

RSA key fingerprint is SHA256:q32uJsSd/3OQnvryETfuh9X2jhCPSAAG0CI6JyLo9JQ.

RSA key fingerprint is MD5:89:19:5a:8d:e6:bf:fd:14:58:a2:f3:97:83:7f:99:0f.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added '[192.168.31.109]:2222' (RSA) to the list of known hosts.

root@192.168.31.109's password:

root@109:~$ hostname -I

192.168.31.109

注意: 如果要升級openssh時用dropbear,在一臺上編譯好后需要直接將/apps/dropbear目錄打包,將下載好所在編譯目錄(/root/package/dropbear)打包,將這個兩個包上傳到要升級的服務(wù)器對應(yīng)的目錄解壓。

在創(chuàng)建/etc/dropbear目錄,如果目標主機沒有/root/package目錄也需要提前創(chuàng)建。在/root/package/dropbear-2022.83執(zhí)行生成密鑰對的命令:/root/package/dropbear-2022.83/dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key -s 2048,注意對應(yīng)版本和路徑密鑰生成后可以啟動服務(wù)了,啟動前先查看要啟動的端口是否被占用,如ss -ntl查看2222端口,啟動服務(wù):cd /apps/dropbear/sbin,執(zhí)行./dropbear -p :2222通過其他主機鏈接測試:ssh root@目標主機IP -p 2222,如果提示沒有路由之類的報錯,先查看目標地址的防火墻是否啟動著,如果啟動需要關(guān)閉防火墻,查看狀態(tài):systemctl status firewalld,關(guān)閉防火墻:systemctl stop firewalld,再次通過ssh進行鏈接測試。

題外話

初入計算機行業(yè)的人或者大學(xué)計算機相關(guān)專業(yè)畢業(yè)生,很多因缺少實戰(zhàn)經(jīng)驗,就業(yè)處處碰壁。下面我們來看兩組數(shù)據(jù):

2023屆全國高校畢業(yè)生預(yù)計達到1158萬人,就業(yè)形勢嚴峻;

國家網(wǎng)絡(luò)安全宣傳周公布的數(shù)據(jù)顯示,到2027年我國網(wǎng)絡(luò)安全人員缺口將達327萬。

一方面是每年應(yīng)屆畢業(yè)生就業(yè)形勢嚴峻,一方面是網(wǎng)絡(luò)安全人才百萬缺口。

6月9日,麥可思研究2023年版就業(yè)藍皮書(包括《2023年中國本科生就業(yè)報告》《2023年中國高職生就業(yè)報告》)正式發(fā)布。

2022屆大學(xué)畢業(yè)生月收入較高的前10個專業(yè)

本科計算機類、高職自動化類專業(yè)月收入較高。2022屆本科計算機類、高職自動化類專業(yè)月收入分別為6863元、5339元。其中,本科計算機類專業(yè)起薪與2021屆基本持平,高職自動化類月收入增長明顯,2022屆反超鐵道運輸類專業(yè)(5295元)排在第一位。

具體看專業(yè),2022屆本科月收入較高的專業(yè)是信息安全(7579元)。對比2018屆,電子科學(xué)與技術(shù)、自動化等與人工智能相關(guān)的本科專業(yè)表現(xiàn)不俗,較五年前起薪漲幅均達到了19%。數(shù)據(jù)科學(xué)與大數(shù)據(jù)技術(shù)雖是近年新增專業(yè)但表現(xiàn)亮眼,已躋身2022屆本科畢業(yè)生畢業(yè)半年后月收入較高專業(yè)前三。五年前唯一進入本科高薪榜前10的人文社科類專業(yè)——法語已退出前10之列。

“沒有網(wǎng)絡(luò)安全就沒有國家安全”。當前,網(wǎng)絡(luò)安全已被提升到國家戰(zhàn)略的高度,成為影響國家安全、社會穩(wěn)定至關(guān)重要的因素之一。

網(wǎng)絡(luò)安全行業(yè)特點

1、就業(yè)薪資非常高,漲薪快 2022年獵聘網(wǎng)發(fā)布網(wǎng)絡(luò)安全行業(yè)就業(yè)薪資行業(yè)最高人均33.77萬!

2、人才缺口大,就業(yè)機會多

2019年9月18日《中華人民共和國中央人民政府》官方網(wǎng)站發(fā)表:我國網(wǎng)絡(luò)空間安全人才 需求140萬人,而全國各大學(xué)校每年培養(yǎng)的人員不到1.5W人。獵聘網(wǎng)《2021年上半年網(wǎng)絡(luò)安全報告》預(yù)測2027年網(wǎng)安人才需求300W,現(xiàn)在從事網(wǎng)絡(luò)安全行業(yè)的從業(yè)人員只有10W人。

行業(yè)發(fā)展空間大,崗位非常多

網(wǎng)絡(luò)安全行業(yè)產(chǎn)業(yè)以來,隨即新增加了幾十個網(wǎng)絡(luò)安全行業(yè)崗位︰網(wǎng)絡(luò)安全專家、網(wǎng)絡(luò)安全分析師、安全咨詢師、網(wǎng)絡(luò)安全工程師、安全架構(gòu)師、安全運維工程師、滲透工程師、信息安全管理員、數(shù)據(jù)安全工程師、網(wǎng)絡(luò)安全運營工程師、網(wǎng)絡(luò)安全應(yīng)急響應(yīng)工程師、數(shù)據(jù)鑒定師、網(wǎng)絡(luò)安全產(chǎn)品經(jīng)理、網(wǎng)絡(luò)安全服務(wù)工程師、網(wǎng)絡(luò)安全培訓(xùn)師、網(wǎng)絡(luò)安全審計員、威脅情報分析工程師、災(zāi)難恢復(fù)專業(yè)人員、實戰(zhàn)攻防專業(yè)人員…

職業(yè)增值潛力大

網(wǎng)絡(luò)安全專業(yè)具有很強的技術(shù)特性,尤其是掌握工作中的核心網(wǎng)絡(luò)架構(gòu)、安全技術(shù),在職業(yè)發(fā)展上具有不可替代的競爭優(yōu)勢。

隨著個人能力的不斷提升,所從事工作的職業(yè)價值也會隨著自身經(jīng)驗的豐富以及項目運作的成熟,升值空間一路看漲,這也是為什么受大家歡迎的主要原因。

從某種程度來講,在網(wǎng)絡(luò)安全領(lǐng)域,跟醫(yī)生職業(yè)一樣,越老越吃香,因為技術(shù)愈加成熟,自然工作會受到重視,升職加薪則是水到渠成之事。

黑客&網(wǎng)絡(luò)安全如何學(xué)習

今天只要你給我的文章點贊,我私藏的網(wǎng)安學(xué)習資料一樣免費共享給你們,來看看有哪些東西。

1.學(xué)習路線圖

行業(yè)發(fā)展空間大,崗位非常多

網(wǎng)絡(luò)安全行業(yè)產(chǎn)業(yè)以來,隨即新增加了幾十個網(wǎng)絡(luò)安全行業(yè)崗位︰網(wǎng)絡(luò)安全專家、網(wǎng)絡(luò)安全分析師、安全咨詢師、網(wǎng)絡(luò)安全工程師、安全架構(gòu)師、安全運維工程師、滲透工程師、信息安全管理員、數(shù)據(jù)安全工程師、網(wǎng)絡(luò)安全運營工程師、網(wǎng)絡(luò)安全應(yīng)急響應(yīng)工程師、數(shù)據(jù)鑒定師、網(wǎng)絡(luò)安全產(chǎn)品經(jīng)理、網(wǎng)絡(luò)安全服務(wù)工程師、網(wǎng)絡(luò)安全培訓(xùn)師、網(wǎng)絡(luò)安全審計員、威脅情報分析工程師、災(zāi)難恢復(fù)專業(yè)人員、實戰(zhàn)攻防專業(yè)人員…

職業(yè)增值潛力大

網(wǎng)絡(luò)安全專業(yè)具有很強的技術(shù)特性,尤其是掌握工作中的核心網(wǎng)絡(luò)架構(gòu)、安全技術(shù),在職業(yè)發(fā)展上具有不可替代的競爭優(yōu)勢。

隨著個人能力的不斷提升,所從事工作的職業(yè)價值也會隨著自身經(jīng)驗的豐富以及項目運作的成熟,升值空間一路看漲,這也是為什么受大家歡迎的主要原因。

從某種程度來講,在網(wǎng)絡(luò)安全領(lǐng)域,跟醫(yī)生職業(yè)一樣,越老越吃香,因為技術(shù)愈加成熟,自然工作會受到重視,升職加薪則是水到渠成之事。

黑客&網(wǎng)絡(luò)安全如何學(xué)習

今天只要你給我的文章點贊,我私藏的網(wǎng)安學(xué)習資料一樣免費共享給你們,來看看有哪些東西。

1.學(xué)習路線圖

攻擊和防守要學(xué)的東西也不少,具體要學(xué)的東西我都寫在了上面的路線圖,如果你能學(xué)完它們,你去就業(yè)和接私活完全沒有問題。

2.視頻教程

網(wǎng)上雖然也有很多的學(xué)習資源,但基本上都殘缺不全的,這是我自己錄的網(wǎng)安視頻教程,上面路線圖的每一個知識點,我都有配套的視頻講解。

內(nèi)容涵蓋了網(wǎng)絡(luò)安全法學(xué)習、網(wǎng)絡(luò)安全運營等保測評、滲透測試基礎(chǔ)、漏洞詳解、計算機基礎(chǔ)知識等,都是網(wǎng)絡(luò)安全入門必知必會的學(xué)習內(nèi)容。

3.技術(shù)文檔和電子書

技術(shù)文檔也是我自己整理的,包括我參加大型網(wǎng)安行動、CTF和挖SRC漏洞的經(jīng)驗和技術(shù)要點,電子書也有200多本,由于內(nèi)容的敏感性,我就不一一展示了。

4.工具包、面試題和源碼

“工欲善其事必先利其器”我為大家總結(jié)出了最受歡迎的幾十款款黑客工具。涉及范圍主要集中在 信息收集、Android黑客工具、自動化工具、網(wǎng)絡(luò)釣魚等,感興趣的同學(xué)不容錯過。

還有我視頻里講的案例源碼和對應(yīng)的工具包,需要的話也可以拿走。

這些題目都是大家在面試深信服、奇安信、騰訊或者其它大廠面試時經(jīng)常遇到的,如果大家有好的題目或者好的見解歡迎分享。

參考解析:深信服官網(wǎng)、奇安信官網(wǎng)、Freebuf、csdn等

內(nèi)容特點:條理清晰,含圖像化表示更加易懂。

內(nèi)容概要:包括 內(nèi)網(wǎng)、操作系統(tǒng)、協(xié)議、滲透測試、安服、漏洞、注入、XSS、CSRF、SSRF、文件上傳、文件下載、文件包含、XXE、邏輯漏洞、工具、SQLmap、NMAP、BP、MSF…

因篇幅有限,僅展示部分資料,需要點擊下方鏈接即可前往獲取

如果你對網(wǎng)絡(luò)安全入門感興趣,那么你需要的話可以點擊這里?網(wǎng)絡(luò)安全重磅福利:入門&進階全套282G學(xué)習資源包免費分享!

柚子快報激活碼778899分享:加密安全-openssh服務(wù)

http://yzkb.51969.com/

好文推薦

評論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。

轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://m.gantiao.com.cn/post/19393767.html

發(fā)布評論

您暫未設(shè)置收款碼

請在主題配置——文章設(shè)置里上傳

掃描二維碼手機訪問

文章目錄