天天看點

SSH服務詳解

SSH服務詳解

第1章 SSH服務

1.1 SSH服務協定說明

SSH 是 Secure Shell Protocol 的簡寫,由 IETF 網絡工作小組(Network Working Group )制定;在進行資料傳輸之前,SSH先對聯機資料包通過加密技術進行加密處理,加密後在進行資料傳輸。確定了傳遞的資料安全。

SSH是專為遠端登入會話和其他網絡服務提供的安全性協定。利用 SSH 協定可以有效的防止遠端管理過程中的資訊洩露問題,在目前的生産環境運維工作中,絕大多數企業普遍采用SSH協定服務來代替傳統的不安全的遠端聯機服務軟體,如telnet(23端口,非加密的)等。

在預設狀态下,SSH服務主要提供兩個服務功能:

n 一是提供類似telnet遠端聯機伺服器的服務,即上面提到的SSH服務。

n 另一個是類似FTP服務的sftp-server,借助SSH協定來傳輸資料的.提供更安全的SFTP服務(vsftp,proftp)。

1.1.1 ssh遠端連接配接排錯過程

SSH服務詳解

1.2 SSH加密技術說明

簡單的說,SSH加密技術就是将人類可以看得懂的資料,通過一些特殊的程式算法,把這些資料變成雜亂的無意義的信怠,然後,通過網絡進行傳輸,而當到了目的地後,在通過對應的解密算法,把傳過來的加密的資料信怠解密成加密前的可讀的正常資料。是以,當資料在網際網路上傳輸時即使被有心的黑客監聽竊取了,也很難擷取到真正黑要的資料。

目前,網絡上的資料包加密技術一般是通過所謂的一對公鑰與私鑰(PublickeyandPivatekey)組合成的密鑰對進行加密與解密操作。如下圖,A-Server要給B_Client傳資料,首先會通過本地的公鑰加密後再到發到網絡上傳輸。而加密的資料到達B_Client端後,再經由B_Client本地的私鑰将加密的資料解密出來。由于在intemet上傳輸過程中的資料是加密過的,是以,傳輸的資料内容一般來說是比較安全的。

SSH服務詳解

圖1-1 ssh認證連接配接的過程

1.2.2 ssh實作安全連結建立,利用要是和鎖頭

1. 鑰匙=私鑰 鎖頭=公鑰,私鑰可以解密公鑰

2. 公鑰可以再網絡中傳輸,私鑰再本地主機儲存

1.2.3 ssh加密算法

v1漏洞: 密鑰不更換

v2 定期更換密鑰

利用Diffie-Hellman機制定期更新密鑰

1.3 ssh知識要點:

ssh是安全的加密協定,用于遠端連結linux伺服器

ssh 預設端口是22,安全協定版本sshv2,出來2之外還有1(有漏洞)

ssh服務端主要包括兩個服務功能 ssh遠端連結和sftp服務

linux ssh 用戶端包括ssh 遠端連結指令,以及遠端拷貝scp指令等

1.4 SSH服務軟體詳細說明

1.4.1 什麼是ssh服務

SSH服務端是一個守護講程 (daemon).他在背景運作并響應來自用戶端的連接配接請求。 SSH服務端的講程名為sshd,負責實時監聽遠端SSH用戶端的遠端連接配接請求,并進行處理,一般包括公共密鑰認證、密鑰交換、對稱密鑰加密和非安全連接配接等。這個SSH服務就是我們前面基礎系統優化中保留開機自啟動的服務之。

ssh用戶端包含ssh以及像scp(遠端拷貝) slogin(遠端登陸) sftp(安全FTP檔案傳輸)等應用程式。

ssh的工作機制大緻是本地的ssh用戶端先發送一個連接配接請求到遠端的ssh服務端,服務端檢查連接配接的用戶端發送的資料包和IP位址,如果确認合法,就會發送密鑰給 SSH的用戶端,此時,用戶端本地再将密鑰發回給服務端,自此連接配接建立。

1.4.2 ssh軟體安裝

用戶端

[root@nfs01 ~]# rpm -qf `which ssh`
openssh-clients-5.3p1-122.el6.x86_64      

服務端軟體

[root@nfs01 ~]# rpm -qf `which sshd`
openssh-server-5.3p1-122.el6.x86_64      

1.4.3 openssh-clinets 軟體的主要内容:

[root@nfs01 ~]# rpm -ql openssh-clients
/etc/ssh/ssh_config         #ssh用戶端配置檔案
/usr/bin/.ssh.hmac
/usr/bin/scp                  #遠端複制指令
/usr/bin/sftp                 #遠端檔案傳輸服務
/usr/bin/slogin              #遠端登陸指令
/usr/bin/ssh                  #ssh遠端登陸管理主機
/usr/bin/ssh-add
/usr/bin/ssh-agent
/usr/bin/ssh-copy-id        #ssh服務分發公鑰指令
/usr/bin/ssh-keyscan      

1.4.4 openssh-server 軟體的主要内容

[root@nfs01 ~]# rpm -ql openssh-server
/etc/rc.d/init.d/sshd      #ssh服務啟動腳本
/etc/ssh/sshd_config       #ssh服務配置檔案
/etc/sysconfig/sshd        #ssh建立密鑰有關
/usr/sbin/.sshd.hmac       #ssh加密算法有關檔案
/usr/sbin/sshd             #ssh服務程序啟動指令      

注意:使用sshd采用絕對路徑進行啟動

[root@test ~]# sshd
sshd re-exec requires execution with an absolute path      

1.5 ssh服務配置檔案說明:

01. 配置檔案中所有注釋資訊,表示預設參數配置

02. 配置檔案中#空格 後面内容表示說明資訊

              #參數 表示配置參數資訊

03. 配置檔案參數資訊修改後,一旦變為注釋,即還原為預設配置

1.5.1 ssh服務的配置檔案路徑

vim  /etc/ssh/sshd_config      

修改SSH服務的運作參數,是通過修改配置檔案/etc/ssh/sshd_config實作的。

一般來說SSH服務使用預設的配置已經能夠很好的工作了,如果對安全要求不高,僅僅提供SSH服務的情況,可以不需要修改任何配置。

1.5.2 配置檔案中常用配置說明

[root@test ~]# vim /etc/ssh/sshd_config
#       $OpenBSD: sshd_config,v 1.80 2008/07/02 02:24:18 djm Exp $
 
# This is the sshd server system-wide configuration file.  See
# sshd_config(5) for more information.
 
# This sshd was compiled with PATH=/usr/local/bin:/bin:/usr/bin
 
# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented.  Uncommented options change a
# default value.
 
# OpenSSH is to specify options with their default value where
# possible, but leave them commented.  Uncommented options change a
# default value.
 
Port 25113                   #端口
ListenAddress 10.0.0.41   #監聽位址(本地網卡位址),指定本地網卡那個網卡提供服務
PermitRootLogin no         #是否允許root使用者登陸
#PermitEmptyPasswords no  #禁止空密碼登陸
#UseDNS no                   #不使用DNS
GSSAPIAuthentication no    #API認證
# 連接配接慢的解決
#AddressFamily any         #指定監聽ipv4位址,或是ipv6位址,或者所有都監聽      

配置檔案内容說明:

井号(#)注釋的參數資訊為預設配置

井号(#)後面有空格的為描述資訊

井号(#)後面沒有空格的為參數資訊

另外:配置檔案參數資訊修改後,一旦變為注釋,即還原為預設配置

1.5.3 配置檔案文法檢查方法

使用sshd -t 指令 對配置檔案的文法進行檢查

正确↓
[root@backup ~]# sshd -t /etc/ssh/sshd
Extra argument /etc/ssh/sshd.
文法格式有錯誤  ↓
[root@test ~]# sshd -t /etc/ssh/sshd_config
/etc/ssh/sshd_config: line 50: Bad configuration option: uthorizedKeysFile
/etc/ssh/sshd_config: terminating, 1 bad configuration options      

1.5.4 ListenAddress 監聽位址的說明

SSH服務詳解

圖1-2 ssh服務監聽參數說明

如圖所示,sshd_config配置檔案中實際監聽本地的網卡,并非網絡位址

監聽位址隻能監聽本地網卡上配置的位址,監聽的網卡可以對請求做出相應,為未監聽的網卡不響應請求。

1.5.5 SSH配置檔案相關參數詳細說明

指令參數 參數說明
Port

指定sshd程序監聽的端口号,預設為22.可以使用多條指令監聽多個端口.

預設将在本機的所有網絡接□上監聽,但是可以通過ListenAddress指走隻在某個特定的接口上監聽.

PermitEmptyPasswords 是否允許密碼為空的使用者遠端登入.預設為"no"
PermitRootLogin

是否允許root登入.可用值如下:"yes"(預設)表示允許."no"表示禁止.

"without-password"表示禁止使用密碼認證登入."forced-commands-only"表示隻有在指走了command選項的情況下才允許使用公鑰認證登入.同時其它認證方法全部被禁止.這個值常用于做遠端備份之類的事情.

1.多開一個視窗

2.臨時多部署一條連接配接方式

3.給普通使用者sudo權限

UseDNS 指定定sshd是否應該對遠端主機名進行反向解折,以檢查此主機名是否與其IP位址真實對應.預設值為"yes”.
ListenAddress 指定監聽并提供服務相應的網卡位址資訊

1.5.6 快速修改配置參數

sed -i '13 iPort 52113\nPermitRootLogin no\nPermitEmptyPasswords no\nUseDNS no\nGSSAPIAuthentication no'  /etc/ssh/sshd_config      

1.6 ssh服務認證類型

01. 基于密碼認證方式

02. 基于密鑰認證方式

1.6.1 基于密碼的認證類型

基于密碼的安全驗證的方式就是大家現在一直在用的,隻要知道伺服器的SSH連接配接帳号和密碼(當然也要知道對應伺服器的 IP及開放的 SSH端口,預設為22 ),就可以通過 ssh用戶端登入到這台遠端主機。此時,聯機過程中所有傳輸的資料都是加密的。

示範了 SecureCR及ssh用戶端連接配接,密碼驗證的測試。

[root@test ~]# ssh 10.0.0.250
The authenticity of host '10.0.0.250 (10.0.0.250)' can't be established.
RSA key fingerprint is d3:41:bb:0d:43:88:da:a3:2c:e8:36:91:11:c9:e4:9c.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.0.0.250' (RSA) to the list of known hosts.
[email protected]'s password:    #需要輸入密碼
Last login: Mon Oct 16 21:13:58 2017 from 10.0.0.1
[root@test ~]#      

1.6.2 基于密鑰的安全認證方法

基于密鑰的安全驗證方式是指,需要依靠密鑰,也就是必須事先建立一對密鑰對,然後把公用密鑰(鎖頭)(Public key)放在需要通路的目标伺服器上,另外,還需要把私有密鑰(鑰匙)(Private key)放到SSH的用戶端或對應的窖戶端伺服器上。

私鑰不能在網絡中傳輸---私鑰可以解密公鑰

公鑰可以再網路中傳輸---公鑰不能解密私鑰 

此時,如果要想連接配接到這個帶有公用密鑰的SSH伺服器,用戶端SSH軟體或者用戶端伺服器就會向SSH伺服器送出請求,請求用聯機的使用者密鑰進行安全驗證。SSH伺服器收到請求之後,會先在該SSH伺服器上連接配接的使用者的家目錄下尋找事先放上去的對應使用者的公用密鑰,然後把它和連接配接的SSH用戶端發送過來的公用密鑰進行比較。如果兩個密鑰一緻,SSH伺服器就用公用密鑰加密"質詢"(challenge)并把它發送給SSH用戶端。

1.7 基于秘鑰登入配置

SSH服務詳解

1.7.1 環境準備

作用 主機名 ip
管理伺服器 m01 10.0.0.61
備份伺服器 backup 10.0.0.41
存儲伺服器 nfs01 10.0.0.31

1.7.2 第一個裡程碑: 在備份伺服器上建立密鑰對

[root@backup ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):   #指定密鑰對的儲存路徑
Enter passphrase (empty for no passphrase):        #為密鑰對建立密碼
Enter same passphrase again:                          #确認為密鑰對建立的密碼
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
72:48:65:1d:25:69:e1:4c:ae:2b:6f:a5:aa:70:96:1e root@backup
The key's randomart image is:
+--[ RSA 2048]----+     #2048表示加密的位數為2048位 
|        o.==.      |
|       o =+.       |
|      .  .+        |
|     . . .         |
|      o S           |
|     . o ..        |
|  . E . .o         |
|   = . oo           |
|    o..o.           |
+-----------------+      

參數說明:

      -t 指定建立密鑰對的類型,可以建立的類型如下↓

Specifies the type of key to create.  The possible values are “rsa1” for protocol version 1 and “dsa”, “ecdsa” or “rsa” for protocol version 2.

檢視建立出來的密鑰對:

[root@backup ssh]# ll ~/.ssh/
total 12
-rw------- 1 root root 1675 Oct 18 11:07 id_rsa         #私鑰檔案
-rw-r--r-- 1 root root  393 Oct 18 11:07 id_rsa.pub    #公鑰檔案
-rw-r--r-- 1 root root  784 Oct 11 16:27 known_hosts      

1.7.3 第二個裡程:将公鑰分發給存儲伺服器

[root@backup ssh]# ssh-copy-id -i ~/.ssh/id_rsa.pub 172.16.1.31 #使用者使用目前使用者
[email protected]'s password:   #注意:首次分發密鑰需要輸入對端伺服器的使用者密碼
Now try logging into the machine, with "ssh '172.16.1.31'", and check in:
  .ssh/authorized_keys    #公鑰分發到對端後進行改名

to make sure we haven't added extra keys that you weren't expecting.      

Formatting page, please wait...

SSH-COPY-ID(1)                                                  SSH-COPY-ID(1)

NAME

       ssh-copy-id  -  install  your  public  key in a remote machine's autho-

       rized_keys

SYNOPSIS

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

1.7.4 第三個裡程碑:進行登入測試

[root@backup ~]# ssh nfs01
Last login: Wed Oct 18 10:13:17 2017 from 10.0.0.1
[root@nfs01 ~]#       

1.8 telnet服務簡介

1.8.1 部署telnet服務

第一個裡程碑:安裝telnet服務軟體

[root@test ~]# yum install telnet telnet-server -y      

第二個裡程碑:設定開機自啟動

[root@test ~]# vim /etc/xinetd.d/telnet      

修改xinetd下的配置檔案,進而管理telnet服務

[root@test ~]# vim /etc/xinetd.d/telnet 
# default: on
# description: The telnet server serves telnet sessions; it uses \
#       unencrypted username/password pairs for authentication.
service telnet
{
        flags           = REUSE
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/sbin/in.telnetd
        log_on_failure  += USERID
        disable         = no
}      

第三個裡程碑: 啟動xinetd 服務,讓telnet能夠開機自啟動

[root@test ~]# /etc/init.d/xinetd start
Starting xinetd:                                           [  OK  ]      

1.8.2 用戶端測試

說明:

    telnet服務預設不支援root使用者直接登陸。

[C:\]$ telnet 10.0.0.250
Connecting to 10.0.0.250:23...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.
CentOS release 6.9 (Final)
Kernel 2.6.32-696.el6.x86_64 on an x86_64
test login: oldboy
Password: 
Last login: Wed Oct 18 09:41:19 from 10.0.0.1
[oldboy@test ~]$      

1.8.3 ssh與telnet差別(對比示意圖)

01.ssh是加密的服務協定,telnet服務是非加密的

02.ssh服務預設支援root使用者登陸,telnet使用者預設不支援root使用者登陸

SSH服務詳解

1.9 進行免密碼scp傳輸測試

[root@backup ~]# scp -rp  /etc/hosts nfs01:/tmp/
hosts                                         100%  357     0.4KB/s   00:00        

1.9.1 scp的基本文法使用:

scp - secure copy (remote file copy program)
# 每次都是全量拷貝,增量拷貝rsync      

推:PUSH

scp -P22 -rp /tmp/clsn [email protected]:/tmp      

<- -P(大寫,注意和ssh指令的不同)接端口,預設22端口時可以省略-P22;

<- -r遞歸,表示拷貝目錄;

<- -p表示在拷貝前後保持檔案或目錄屬性;

<- -l limit 限制速度。

<- /tmp/clsn為本地的目錄。“@”前為使用者名,“@”後為要連接配接的伺服器的IP。IP後的:/tmp目錄,為遠端的目标目錄。

以上指令作用是把本地/tmp/clsn拷貝到遠端伺服器10.0.0.143的/tmp目錄;

拉:PULL

scp -P22 -rp [email protected]:/tmp/clsn /opt/      

還可以把遠端目錄抓到本地

結論:

scp為遠端拷貝檔案或目錄的指令,更多用法,請man scp;
拷貝權限為連接配接的使用者對應的權限。      

1.10 使用sftp進行基于密鑰的檔案傳輸

1.10.1 sftp簡介

sftp是Secure File Transfer Protocol的縮寫,安全檔案傳送協定。可以為傳輸檔案提供一種安全的網絡的加密方法。sftp 與 ftp 有着幾乎一樣的文法和功能。SFTP 為 SSH的其中一部分.

1.10.2 sftp指令說明

[root@m01 ~]# sftp -oPort=22  172.16.1.31
Connecting to 172.16.1.31...
sftp>      

   -o        連接配接的時候指定選項

Port=22  端口指定為22、

1.10.3 sftp使用參數說明

操作遠端伺服器

ls    顯示遠端主機的清單
cd   切換遠端的工作目錄
pwd  顯示遠端的工作目錄      

操作本地伺服器

lls   顯示本地主機的清單
lcd   切換本地的工作目錄
lpwd  檢視本地目錄資訊      

上傳下載下傳檔案參數

get   --- 表示從遠端伺服器下載下傳資料(單個檔案)
mget  --- 表示下載下傳多個檔案
put   --- 表示從本地伺服器上傳資料(單個檔案)
mput  --- 表示上傳多個檔案      

檢視幫助的方式:

sftp> help       顯示幫助資訊      

1.11 ssh相關重點知識總結

* ssh協定:sshd---遠端連接配接(sshd),sftp

* 為加密的遠端連接配接協定,相關軟體有openssh.openssh---https。

* 預設端口22

* 協定版本1X和2.x,2.x更安全。了解SSH協定原理(ssh連接配接過程X

* 服務端ssh遠端連接配接服務,sftp服務。sshd守護程序,開機要自啟動。

* ssh用戶端包含ssh,scp,sftp指令。

* ssh安全驗證方式:密碼和密鑰,這兩種都是基于密碼的,SSH密鑰登入的原理。

* ssh服務安全優化,修改預設端口22,禁止root遠端連接配接,禁止dns,SSH隻監聽内網IP

* ssh密鑰對,公鑰(publickey)在伺服器端,比喻就是鎖頭,私鑰(privatekey)在用戶端,比喻就是鑰匙。

第2章 重點知識補充

2.1 一個服務始終無法啟動

  01.服務的查日志/系統日志

  02.檢查服務端口有沒有沖突

2.2 給你一個端口如何指令行查出對應的服務是什麼?

測試服務端口有沒有開啟

ss -lntup|grep 22
netstat -lntup|grep -w "22"
lsof -i:22
grep  "\b22/\b" /etc/services
nmap -p 22 172.16.1.41
nc 172.16.1.41 22
telnet 172.16.1.41 22      

2.2.1 根據程序名檢視對應的端口是什麼?

netstat/ss –lntup|grep 程序或服務名字      

2.3 ssh入侵案例說明

被入侵執行個體http://phenixikki.blog.51cto.com/7572938/1546669

IP何防止SSH登入入侵小結:

1、用密鑰登入,不用密碼登陸

2、牤牛陣法:解決SSH安全問題

  a.防火牆封閉SSH,指定源IP限制(區域網路、信任公網)

  b.開啟 SSH 隻監聽本地内網 IP ( ListenAddress 172.16.1.61 )

3、盡量不給伺服器外網ip

4、最小化(軟體安裝-授權)

5、給系統的重要檔案或指令做一個指紋

6、給他鎖上 chattr +i +a

第3章 擴充問題

3.1 服務端端口号變化了,如何基于秘鑰連接配接

3.1.1 環境準備

實驗環境:

[root@test ~]# cat /etc/redhat-release
CentOS release 6.9 (Final)      

将一台伺服器的ssh服務端口修改為63389

[root@test ~]# netstat -lntup|grep sshd
tcp        0      0 0.0.0.0:63389  0.0.0.0:*         LISTEN      5083/sshd           
tcp        0      0 :::63389         :::*              LISTEN      5083/sshd          

3.1.2 通過另外一台伺服器建立并分發密鑰

第一個裡程碑: 現建立密鑰使用 ssh-keygen

[root@backup ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):   #指定密鑰對的儲存路徑
Enter passphrase (empty for no passphrase):        #為密鑰對建立密碼
Enter same passphrase again:                          #确認為密鑰對建立的密碼
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
72:48:65:1d:25:69:e1:4c:ae:2b:6f:a5:aa:70:96:1e root@backup
The key's randomart image is:
+--[ RSA 2048]----+     #2048表示加密的位數為2048位 
|        o.==.      |
|       o =+.       |
|      .  .+        |
|     . . .         |
|      o S          |
|     . o ..        |
|  . E . .o         |
|   = . oo          |
|    o..o.          |
+-----------------+      

第二個裡程碑:分發密鑰,注意ssh的端口

[root@backup ~]# ssh-copy-id  -i ~/.ssh/id_rsa.pub "-p63389 172.16.1.250"
The authenticity of host '[172.16.1.250]:63389 ([172.16.1.250]:63389)' can't be established.
RSA key fingerprint is d3:41:bb:0d:43:88:da:a3:2c:e8:36:91:11:c9:e4:9c.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[172.16.1.250]:63389' (RSA) to the list of known hosts.
[email protected]'s password: 
Now try logging into the machine, with "ssh '-p63389 172.16.1.250'", and check in:
  .ssh/authorized_keys   #分發到對端伺服器後進行改名

to make sure we haven't added extra keys that you weren't expecting.      

   通過 man 手冊找到密鑰分發的指令格式。

   -i 參數指定 公鑰檔案的存放位置

[use@]表示使用的使用者,預設使用目前登陸的使用者

-p 指定端口,主要要在雙引号之間(通過 cat `which ssh-copy-id`  指令腳本内容得知)

[root@backup ~]# man ssh-copy-id 
Formatting page, please wait...
SSH-COPY-ID(1)                                                  SSH-COPY-ID(1)
NAME
       ssh-copy-id  -  install  your  public  key in a remote machine's autho-
       rized_keys
SYNOPSIS      

第三個裡程碑: 測試密鑰登陸

[root@backup ~]# ssh 172.16.1.250 -p 63389
Last login: Wed Oct 18 15:42:05 2017 from 10.0.0.41
[root@test ~]#      

3.2 如何實作自動建立秘鑰對,同時分發公鑰(編寫腳本實作)

腳本内容:

[root@m01 ~]# vim /server/scripts/piliang_fenfa.sh 
#!/bin/bash
#make key
\rm -f /root/.ssh/id_dsa
ssh-keygen -t dsa -f /root/.ssh/id_dsa -P "" -q
#fengfagongyao
for ip in 8 31 41
do
echo ====fenfa key to host 172.16.1.$ip====
sshpass -p123456 ssh-copy-id -i /root/.ssh/id_dsa.pub "-o StrictHostKeyChecking=no [email protected].$ip"
echo ===============fenfa end==============
echo ""
done      

腳本說明:

ssh-keygen -t dsa -f /root/.ssh/id_dsa -P "" -q      

   建立密鑰,-f指定存放位置,-P 密鑰加密的密碼  -q 減少資訊輸出

sshpass -p123456 ssh-copy-id -i /root/.ssh/id_dsa.pub "-o StrictHostKeyChecking=no [email protected].$ip"      

   這裡需要安裝一個軟體 yum install sshpass -y 用來提供中戶密碼

ssh-copy-id 指令來分發密鑰 -i 指定密鑰本地存放的路徑

-o StrictHostKeyChecking=no 在登陸其他伺服器是不選擇yes/no

for ip in 8 31 41      

   這裡使用for循環來對ip位址進行變化。

系統負載過高,無法連接配接ssh怎麼辦?

   可以通過修改 程序優先級的方法來是sshd服務能夠更多的使用資源,保證sshd的連接配接

修改程序優先級的方法:

  優先系數由系統核心決定,不可更改

  nice值可以手動更改,範圍是 -20~19

  優先級的值越低,優先級越高;優先級的值越高,優先級越低。

  是以想調整成最高優先級的話,就将nice值設為-20;想調整成最低優先級的話,将nice值設為19。

1、任務未運作前進行調整

shell> nice -n-20 sh clsn.sh   #以最高優先級運作clsn.sh這個腳本
shell> nice -n19 sh clsn.sh    #以最低優先級運作clsn.sh這個腳本      

2、任務已經開始運作的情況下調整

①方法一

# top                        #檢視系統目前程序運作情況
> r                          #鍵入小r
> PID to renice:             #提示輸入運作的程序的pid
> Renice PID 23302 to value: #把這個程序的nice值設定為多少,根據需要進行調整      

② 方法二

shell> renice -20 PID    #将程序的nice值改為-20
shell> renice 19 PID     #将程序的nice值改為19      

 檢視程序優先級

[root@clsn ~]# ps -lef |grep sshd 
5 S root      1050     1  0  61 -19 - 16560 poll_s Feb04 ?        00:00:00 /usr/sbin/sshd
4 S root     21018  1050  0  80   0 - 25003 poll_s 17:21 ?        00:00:00 sshd: root@pts/0 
0 S root     22852 21022  0  80   0 - 25829 pipe_w 20:47 pts/0    00:00:00 grep sshd
[root@clsn ~]#       

作者:慘綠少年

出處:http://clsn.io

本文版權歸作者所有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。

ssh

繼續閱讀