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

目錄

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

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

http://yzkb.51969.com/

openssh服務(wù)

1、ssh配置

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

# 109節(jié)點(diǎn)第一次通過ssh鏈接106,需要手動(dòng)輸入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])?

當(dāng)手動(dòng)輸入yes后,109會(huì)獲取到106的公鑰文件:公鑰位置在106節(jié)點(diǎn)的/etc/ssh/下,會(huì)有多個(gè).pub結(jié)尾的公鑰文件,109鏈接的時(shí)候會(huì)隨機(jī)一個(gè)公鑰文件。

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

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

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é)點(diǎn)存放公鑰的位置:

[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

禁止首次連接的詢問過程

場(chǎng)景:如果管理的主機(jī)較多,不想每個(gè)第一次鏈接都輸入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命令進(jìn)行修改,在客戶端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、格式

# 一般習(xí)慣使用第一種

ssh [user@]host [COMMAND]

ssh [-l user] host [COMMAND]

注意:一般使用ssh user@主機(jī)IP時(shí),如果省略u(píng)ser,則默認(rèn)按照當(dāng)前用戶執(zhí)行鏈接,如:

109連接106

# 109當(dāng)前用戶為root,省略u(píng)ser則默認(rèn)使用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當(dāng)前用戶為app,在連接106的時(shí)候需要輸入106app的密碼,如果106沒有app用,則連接失敗。

3、常見選項(xiàng)

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

-b 指定連接的源IP

-v 調(diào)試模式

-C 壓縮方式

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

-t 強(qiáng)制偽tty分配,如:ssh -t remoteserver1 ssh -t remoteserver2 ssh

remoteserver3

-o option 如:-o StrictHostKeyChecking=no

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

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

范例:-t參數(shù)

場(chǎng)景:如果公司有臺(tái)服務(wù)器106節(jié)點(diǎn),無法直接通過公網(wǎng)登錄,只能通過107進(jìn)行登錄,你只能通過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)登錄到目標(biāo)106主機(jī)了

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

inet 192.168.31.106/24 brd 192.168.31.255 scope global noprefixroute ens192

范例:遠(yuǎn)程執(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 ~]#

范例:在遠(yuǎn)程主機(jī)運(yùn)行本地shell腳本

# 當(dāng)前主機(jī)為106

[root@192 shell]# hostname -I

192.168.31.106

# 腳本內(nèi)容,獲取當(dāng)前主機(jī)IP

[root@192 shell]# cat test.sh

#! /bin/bash

hostname -I

# 在107上執(zhí)行106的腳本,當(dāng)前主機(jī)為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、查看遠(yuǎn)程登錄失敗記錄-lastb

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

例如:

在109節(jié)點(diǎn)未遠(yuǎn)程登錄107的時(shí)候,可以查看107的記錄

[root@192 ~]# lastb

btmp begins Sat Mar 2 23:57:47 2024

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

# 109節(jié)點(diǎn)通過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

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

# 該文件為二進(jìn)制文件,無法直接打開

[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ù)最多的前三個(gè)IP

查看鏈接失敗的列表

# 查看鏈接失敗情況,可以看到一共涉及4個(gè)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)計(jì)行數(shù),一共17條

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

17

統(tǒng)計(jì)鏈接失敗次數(shù)最多的前三個(gè)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、基于密鑰對(duì)驗(yàn)證(免密登錄)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

例:

192.168.31.105要免密登錄192.168.31.106

在105節(jié)點(diǎn)生成密鑰對(duì)

[root@192 ~]# ll .ssh

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

[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)生成了密鑰對(duì)

[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é)點(diǎn)

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

[root@192 ~]# ll .ssh

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

# 在105節(jié)點(diǎn)進(jìn)行傳輸公鑰文件到106節(jié)點(diǎn)

[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é)點(diǎn)是否收到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

登錄驗(yàn)證

在105節(jié)點(diǎn)登錄106節(jié)點(diǎn)

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

[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é)點(diǎn)已做106與107的免密,現(xiàn)在在105節(jié)點(diǎn)執(zhí)行腳本,是其在106與107節(jié)點(diǎn)均能執(zhí)行105節(jié)點(diǎn)的腳本。

# 105節(jié)點(diǎn)的腳本內(nèi)容,就是一個(gè)獲取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

對(duì)私鑰口令進(jìn)行加密

場(chǎng)景:如果免密做的是多臺(tái),如100臺(tái),服務(wù)器私鑰(105的私鑰)變得比較重要,如果一旦私鑰被人竊?。ㄈ缙平鈘oot密碼后竊?。敲淳拖喈?dāng)于破解100臺(tái)的密碼,所以對(duì)私鑰進(jìn)行加密就變得格外需要。

加密口令

ssh-keygen -p

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

例:

場(chǎng)景:對(duì)上述實(shí)驗(yàn)中105節(jié)點(diǎn)的密鑰進(jìn)行加密。

# 對(duì)105節(jié)點(diǎn)的私鑰進(jìn)行加密

[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. # 加密完成

驗(yàn)證

# 登錄106節(jié)點(diǎn)進(jìn)行驗(yàn)證,輸入設(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é)點(diǎn)驗(yàn)證

[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

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

啟動(dòng)代理

# 啟用代理

[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)

驗(yàn)證:

# 登錄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

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

# 當(dāng)前IP

[root@192 ~]# hostname -I

192.168.31.105

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

[root@192 ~]# exit

exit

[root@192 ~]# hostname -I

192.168.31.105

# 代理進(jìn)程已經(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

**場(chǎng)景:**我們有時(shí)候不是固定在某一臺(tái)電腦進(jìn)行遠(yuǎn)程服務(wù)器的,可能在辦公環(huán)境的不同電腦,也可能在家里的電腦,也可能借用其他同事的電腦,每次登錄輸入賬號(hào)密碼顯然是不安全的,此時(shí)我們只需要在自己電腦上生成密鑰對(duì),將公鑰上傳到服務(wù)器,將私鑰拷貝到U盤中,需要登錄的以后調(diào)用U盤中的私鑰即可實(shí)現(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)

可以點(diǎn)擊保存文件

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

此處可以將密鑰導(dǎo)出后點(diǎn)擊完成 ![在這里插入圖片描述](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)建一個(gè)。

# 105節(jié)點(diǎn)目錄下并沒有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(該文件為新建文件,因?yàn)楸緳C(jī)沒有,如果存在追加即可)

[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 ~]#

進(jìn)行密鑰登錄驗(yàn)證

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

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

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

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

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

注意:操作之前一定要檢查下106節(jié)點(diǎn)是否存在/root/.ssh目錄,如果存在最后將其刪除,因?yàn)槔镞吙赡軙?huì)有已生成的密鑰對(duì),如果存在密鑰對(duì),腳本有可能執(zhí)行不成功,執(zhí)行前必須要?jiǎng)h除密鑰對(duì),最后將.ssh目錄刪除。要保證107與109節(jié)點(diǎn)的密碼一致,例子中的密碼為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é)點(diǎn)的密碼

PASS="Qwerdf12.."

hosts_file="hosts.txt"

# 安裝 expect 包

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

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

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

# -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 地址,并進(jìn)行 SSH 免密鑰驗(yàn)證

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"

驗(yàn)證:

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

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

[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

常用選項(xiàng):

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

-r 遞歸復(fù)制

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

-q 靜默模式

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

8、其他ssh工具—rsync

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

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

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

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

常見選項(xiàng)

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

-v 顯示詳細(xì)過程

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

-p 保留權(quán)限

-t 保留修改時(shí)間戳

-g 保留組信息

-o 保留所有者信息

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

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

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

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

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

--delete 源數(shù)據(jù)刪除,目標(biāo)數(shù)據(jù)也自動(dòng)同步刪除

安裝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、不同主機(jī)之間的數(shù)據(jù)同步

例:

在192.168.31.106同步文件到192.168.31.109,目錄名都為data,106與107已做免密,并且兩個(gè)節(jié)點(diǎn)都安裝了rsync,同步前我們先生成一些測(cè)試數(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

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

# 在106節(jié)點(diǎn)執(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é)點(diǎn)查看同步數(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é)點(diǎn)同步的命令中寫的是/data目錄,并不是/data/,所以同步的時(shí)候會(huì)將目錄及目錄下的文件全部同步過去。

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

# 刪除107節(jié)點(diǎn)/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é)點(diǎn)查看同步數(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é)點(diǎn)同步是用的是/data/,是加了“/”的,可以看到本次同步結(jié)果是直接將106 data目錄下的所有數(shù)據(jù)同步到了107節(jié)點(diǎn),并未包含106的data目錄。目錄后加“/”與不加是有區(qū)別的。

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

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

# 106節(jié)點(diǎn)

# 在test1文件后追加一個(gè)空行,發(fā)現(xiàn)多了一個(gè)字節(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

再次同步驗(yàn)證

# 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、單臺(tái)主機(jī)內(nèi)部不同目錄之間的數(shù)據(jù)同步

如:

主機(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 是一個(gè)用于在 Unix 和類 Unix 系統(tǒng)之間同步文件和目錄的工具,它本身沒有直接提供日志記錄功能。然而,你可以使用一些技巧來實(shí)現(xiàn)日志記錄:

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

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

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

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

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

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

9、ssh服務(wù)配置

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

常見參數(shù):

Port 22 # 服務(wù)端口

#AddressFamily any

#ListenAddress 0.0.0.0 # 默認(rèn)情況下22端口會(huì)監(jiān)聽在當(dāng)前主機(jī)的所有IP,每個(gè)IP的22端口都可

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

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

#ListenAddress ::

# 這個(gè)三個(gè)是私鑰路徑

#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分鐘,如果在登錄的時(shí)候該輸入密碼或者輸入yes的時(shí)候,什么也不

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

# 過程中)

#PermitRootLogin prohibit-password

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

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

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

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

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

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

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

#PubkeyAuthentication yes # 基于key驗(yàn)證

#PermitEmptyPasswords no # 空密碼連接

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

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

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

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

ClientAliveInterval 10 #單位:秒

ClientAliveCountMax 3 #默認(rèn)3

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

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

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

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

AllowUsers user1 user2 user3

DenyUsers user1 user2 user3

AllowGroups g1 g2

DenyGroups g1 g2

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

Vim /etc/ssh/sshd_config

ClientAliveInterval 60

ClientAliveCountMax 0

Service sshd restart

#注意:新開一個(gè)連接才有效

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

vim /etc/ssh/sshd_config

UseDNS no

GSSAPIAuthentication no

systemctl restart sshd

范例:在 ubuntu 上啟用root 遠(yuǎn)程ssh登錄

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

vim /etc/ssh/sshd_config

#PermitRootLogin prohibit-password 注釋掉此行

PermitRootLogin yes 修改為下面形式

systemctl restart sshd

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

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

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

10.1、掛載遠(yuǎn)程ssh目錄-sshfs

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

[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、自動(dòng)登錄ssh工具-sshpass

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

格式:

sshpass [option] command parameters

常見選項(xiàng)

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

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

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

范例:

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

# 109節(jié)點(diǎn)安裝sshpass

root@109:~$ yum -y install sshpass

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

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])?

# 為了保險(xiǎn)可以將109的 .ssh 目錄刪除

root@109:~$ rm -rf .ssh

# 通過sshpass非交互式登錄106節(jié)點(diǎn),登錄成功,用的是-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é)點(diǎn),登錄成功,用的是-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é)點(diǎn),登錄成功,通過將密碼寫入變量中實(shí)現(xiàn)

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

192.168.31.106

**注意:**109節(jié)點(diǎn)必須先配置epel源,因?yàn)樵摴ぞ邅碜杂趀pel源。

10.2.1、手動(dòng)免密

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

# 109節(jié)點(diǎn)獲取密鑰對(duì)

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]-----+

拷貝公鑰到目標(biāo)主機(jī)

# 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.

登錄驗(yàn)證

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:批量部署多臺(tái)主機(jī)基于key驗(yàn)證腳本(實(shí)現(xiàn)多臺(tái)免密登錄)腳本詳解參考:shell/腳本實(shí)例/批量部署多臺(tái)主機(jī)基于key驗(yàn)證腳本

部署前驗(yàn)證

# 驗(yàn)證前刪除得到各節(jié)點(diǎn)公鑰

root@109:~$ rm -rf .ssh

# 驗(yàn)證登錄,發(fā)現(xiàn)在登錄前都必須登錄驗(yà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ù)實(shí)際環(huán)境選擇適當(dāng)?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

再次驗(yàn)證登錄情況

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

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:批量部署多臺(tái)主機(jī)基于key驗(yàn)證腳本(實(shí)現(xiàn)多臺(tái)免密登錄)腳本詳解參考:shell/腳本實(shí)例/批量部署多臺(tái)主機(jī)基于key驗(yàn)證腳本,第二種寫法

創(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密鑰對(duì)

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

# 并發(fā)執(zhí)行ssh-copy-id命令(這里假設(shè)你確實(shí)需要并發(fā)處理,但請(qǐng)根據(jù)實(shí)際情況調(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

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

wait

登錄驗(yàn)證

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

驗(yàn)證登錄成功

10.2.3、批量修修改主機(jī)root密碼為隨機(jī)密碼通

編寫腳本:在109節(jié)點(diǎn)編寫腳本: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生成隨機(jī)密碼,大小寫字母+數(shù)字

NEW_PASS=`openssl rand -base64 9`

# 這條命令主要是考慮密碼強(qiáng)度不夠,在生成的隨機(jī)密碼后拼接了“ @ ”特殊符號(hào)

# 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

進(jìn)行登錄驗(yàn)證

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、輕量化自動(dòng)化運(yùn)維工具 pssh

EPEL源中提供了多個(gè)自動(dòng)化運(yùn)維工具,該工具來自與pssh

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

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

pssh命令選項(xiàng)如下:

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

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

-A:手動(dòng)輸入密碼模式

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

-l:登錄使用的用戶名

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

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

-e:錯(cuò)誤輸出文件【可選】

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

-O:SSH的選項(xiàng)

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

-v:詳細(xì)模式

--version:查看版本

安裝

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

yum install -y pssh

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

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

# 不用-A參數(shù)直接使用會(huì)報(bào)錯(cuò),pssh默認(rèn)是基于key驗(yàn)證的

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í)行成功的,如下:

# 第一次鏈接需要輸入也是,這個(gè)地方直接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進(jìn)行遠(yuǎn)程執(zhí)行命令驗(yàn)證,直接報(bào)錯(cuò)了

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

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

vim /etc/ssh/ssh_config

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

# StrictHostKeyChecking ask

# 修改后如下:

StrictHostKeyChecking no

驗(yàn)證是否可行

# 驗(yàn)證前先刪除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在多主機(jī)執(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

注意:這個(gè)地方只讓輸入一個(gè)密碼,也就意味著兩臺(tái)主機(jī)的密碼必須一致。不過可以通過免密后進(jìn)行。

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

# 正常不加 -i 參數(shù)的情況,不顯示詳細(xì)信息,只顯示主機(jī)的狀態(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ù)后會(huì)顯示詳細(xì)信息

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驗(yàn)證

# 基于key驗(yàn)證首先需要做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:主機(jī)列表文件

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

# 已做從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)建用戶賬號(hào)

# 免密已做

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

# 驗(yàn)證是否創(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é)點(diǎn)

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

# 如果有一臺(tái)主機(jī)存在該目錄,則會(huì)報(bào)錯(cuò)

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ù)(重定向)

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

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

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

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

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

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

# 在107上進(jìn)行驗(yàn)證,發(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

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

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

# 不加引號(hào)顯示本機(jī)的變量

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

# 雙引號(hào)仍顯示的是本機(jī)的

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

# 單引號(hào)顯示是目標(biāo)主機(jī)的

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

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

10.4、pscp.pssh命令

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

包來源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選項(xiàng)

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

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

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

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

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

#! /bin/bash

hostname

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

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

# 將本地的腳本復(fù)制到遠(yuǎn)程主機(jī)的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í)行遠(yuǎn)程主機(jī)的腳本

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功能是將遠(yuǎn)程主機(jī)的文件批量復(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選項(xiàng)

-L 指定從遠(yuǎn)程主機(jī)下載到本機(jī)的存儲(chǔ)的目錄,local是下載到本地后的名稱

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

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

# 測(cè)試在有相同文件名的文件是去創(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

范例:

批量下載目標(biāo)主機(jī)的文件

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

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)建該目錄,繼而報(bào)錯(cuò)

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

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

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是一個(gè)相對(duì)較小的SSH服務(wù)器和客戶端。它運(yùn)行在一個(gè)基于POSIX的各種平臺(tái)。 Dropbear是開源軟件,在麻省理工學(xué)院式的許可證。 Dropbear是特別有用的“嵌入”式的Linux(或其他Unix)系統(tǒng),如無線路由器,期望在存儲(chǔ)器與運(yùn)算能力有限的情況下取代OpenSSH,尤其是嵌入式系統(tǒng)。

dropbear可以在升級(jí)openssh的時(shí)候進(jìn)行安裝,這樣即使在sshd服務(wù)掛掉也不會(huì)影響通過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目錄,這個(gè)是上邊執(zhí)行configure時(shí)定義存放私鑰的路徑,需要手動(dòng)創(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

# 啟動(dòng)服務(wù),因?yàn)閐ropbear默認(rèn)也是啟動(dòng)22端口,和系統(tǒng)openssh的沖突了,手動(dòng)指定端口,如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 :::*

# 前臺(tái)啟動(dòng)dropbear

dropbear -p :2222 -FE

# 后臺(tái)運(yùn)行

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

# 后臺(tái)啟動(dòng)(一般生產(chǎn)環(huán)境會(huì)采用后臺(tái)啟動(dòng)的方式),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 :::*

# 測(cè)試,從105節(jié)點(diǎn)進(jìn)行連接測(cè)試,已經(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

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

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

題外話

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

2023屆全國(guó)高校畢業(yè)生預(yù)計(jì)達(dá)到1158萬人,就業(yè)形勢(shì)嚴(yán)峻;

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

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

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

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

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

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

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

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

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

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

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

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

網(wǎng)絡(luò)安全行業(yè)產(chǎn)業(yè)以來,隨即新增加了幾十個(gè)網(wǎng)絡(luò)安全行業(yè)崗位︰網(wǎng)絡(luò)安全專家、網(wǎng)絡(luò)安全分析師、安全咨詢師、網(wǎng)絡(luò)安全工程師、安全架構(gòu)師、安全運(yùn)維工程師、滲透工程師、信息安全管理員、數(shù)據(jù)安全工程師、網(wǎng)絡(luò)安全運(yùn)營(yíng)工程師、網(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ò)安全審計(jì)員、威脅情報(bào)分析工程師、災(zāi)難恢復(fù)專業(yè)人員、實(shí)戰(zhàn)攻防專業(yè)人員…

職業(yè)增值潛力大

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

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

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

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

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

1.學(xué)習(xí)路線圖

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

網(wǎng)絡(luò)安全行業(yè)產(chǎn)業(yè)以來,隨即新增加了幾十個(gè)網(wǎng)絡(luò)安全行業(yè)崗位︰網(wǎng)絡(luò)安全專家、網(wǎng)絡(luò)安全分析師、安全咨詢師、網(wǎng)絡(luò)安全工程師、安全架構(gòu)師、安全運(yùn)維工程師、滲透工程師、信息安全管理員、數(shù)據(jù)安全工程師、網(wǎng)絡(luò)安全運(yùn)營(yíng)工程師、網(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ò)安全審計(jì)員、威脅情報(bào)分析工程師、災(zāi)難恢復(fù)專業(yè)人員、實(shí)戰(zhàn)攻防專業(yè)人員…

職業(yè)增值潛力大

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

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

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

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

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

1.學(xué)習(xí)路線圖

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

2.視頻教程

網(wǎng)上雖然也有很多的學(xué)習(xí)資源,但基本上都?xì)埲辈蝗?,這是我自己錄的網(wǎng)安視頻教程,上面路線圖的每一個(gè)知識(shí)點(diǎn),我都有配套的視頻講解。

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

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

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

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

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

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

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

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

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

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

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

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

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

http://yzkb.51969.com/

好文推薦

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

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

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

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

發(fā)布評(píng)論

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

請(qǐng)?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問

文章目錄