ssh免密登錄 優化 和免密免輸入yes連接


ssh免密登錄

ssh密匙認證過程

# rsa(默認)和 dsa 是服務器連接的時候,必須要使用的協議

沒有遠程登錄(ssh協議連接)過的用戶**家目錄**下沒有.ssh目錄
遠程ssh協議連接過 家目錄下才有.ssh目錄

vim粘貼之前要進入編輯模式

虛擬機外網網卡連接,xshell才能連接
殺掉sshd進程或者關閉sshd進程 可導致xshell連不上,需要重啟虛擬機才能連接(去機房?)

web01服務器是可以ping外網IP和內網IP的
如果web01服務器斷開內網網卡,內網虛擬機斷開外網網卡的連接
那么web01 就不能ping內網IP了,因為內網和外網是不能直接連接的,除非web01打開內網網卡,並且和內網虛擬機處於同一個lan區段,內網虛擬機才能間接的連接外網

公鑰可以發給自己,免密連接自己,和bash'相似'
免密連接和用戶身份無關,系統所有用戶都可以使用免密的方式進行 遠程連接

DNS,把域名解析成IP
DNS反向解析,把IP解析成域名

[root@web01 ~]# ssh-keygen			#默認使用rsa協議生成密匙
[root@web01 ~]# ssh-keygen -t dsa	 # -t 指定使用dsa 協議生成密匙 

1.#創建密鑰對
[root@web01 ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:RbzrPnQlDvH5EclGBCiTNc6IyYAVh4P97wIaVzNMUU4 root@web01
The key`s randomart image is:
+---[RSA 2048]----+		#創建密匙使用的協議
|   =+oooE++..=o. |
|  o ++.=+=+.  =  |
|     =+ oo++ o . |
|      *  .o + o  |
|     . +S  + + . |
|  . o   . o o .  |
|   + . . o .     |
|  .   . . o      |
|       . ...     |
+----[SHA256]-----+		#加密算法
[root@web01 ~]# cd .ssh/
[root@web01 ~/.ssh]# ll
total 12
-rw------- 1 root root 1675 May 11 19:15 id_rsa		#私鑰,相當於鑰匙
-rw-r--r-- 1 root root  392 May 11 19:15 id_rsa.pub	 #公鑰,相當於鎖
-rw-r--r-- 1 root root  170 May 10 10:09 known_hosts  #免yes,認證信息
# known_hosts 是使用過ssh之后自動生成的文件,里面記錄了ssh連接后 記錄免yes 的信息 (有了這個文件,下次再使用ssh的時候不用輸入yes),
花園報錯:出現一堆@@@@@免密認證失敗,1.修改known_hosts文件中對應的 連接記錄,2.刪除known_hosts (直接該用戶 vim ~/.ssh/known_hosts +N 再dd )

2.#發送公鑰(需要輸入yes和密碼,因為使用了ssh遠程連接協議),可以發到root用戶,也可以發到普通用戶
#查看ssh-copy-id 命令 屬於哪個包
[root@web01 ~]# yum provides ssh-copy-id
openssh-clients-7.4p1-21.el7.x86_64
[root@web02 ~]# rpm -q openssh-clients	#linux系統默認安裝過了
openssh-clients-7.4p1-21.el7.x86_64

-i:指定公鑰文件
-P:指定端口(注意位置)
-f: 強制安裝
ssh-copy-id -i /root/.ssh/id_rsa.pub -o stricthostkeychecking=no	#不需要輸入yes了

把本地的ssh公鑰文件 安裝 到遠程主機對應的家目錄下,並且授權為600且改名(#不是單純的拷貝)
默認拷貝到 指定主機,指定用戶的家目錄下
[root@web01 ~/.ssh]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.16.1.41

#連接
[root@web01 ~/.ssh]# ssh 'root@172.16.1.41'		#不需要輸入密碼,會有默認輸出

#10.0.0.7查看公鑰內容
[root@web01 ~/.ssh]# cat id_rsa.pub

#10.0.0.41,查看公鑰內容,可以發現公鑰內容是一樣的
[root@backup ~]# cd .ssh/
[root@backup ~/.ssh]# ll
total 8
-rw------- 1 root root 392 May 11 19:21 authorized_keys	# 600權限,該文件可以存放多個公鑰,該文件有10個公鑰,說明有10個主機可以免密連接該主機

-rw-r--r-- 1 root root 171 May  8 22:26 known_hosts  #
[root@backup ~/.ssh]# cat authorized_keys

2.#自己做公鑰(不需要知道root密碼)(小心串行讓人頭疼)
	1.查看生成的公鑰並復制
	[root@web01 ~]# cat /root/.ssh/id_rsa.pub
	
	2.
	#創建.ssh目錄,沒用使用過ssh的用戶 家目錄下沒有.ssh目錄
	[root@web02 ~]# mkdir -p /root/.ssh/ 
    #粘貼公匙
	[root@web02 ~]# vim /root/.ssh/authorized_keys
	#文件授權,仿造文件權限(最好是600)
	chmod 600 /root/.ssh/authorized_keys
	#目錄授權,仿造目錄權限
	chmod 700 /root/.ssh
	
	3.連接
	[root@web01 ~]# ssh 10.0.0.8

分發密匙腳本

pass='1'
        ip='172.16.1.'
        ssh-keygen -t rsa -P "" -f /root/.ssh/id_rsa
        for i in  5 6 7 8 9 31 41 51 52 53 54 71 ;
        do
        sshpass -p $pass ssh-copy-id -i /root/.ssh/id_rsa.pub -o stricthostkeychecking=no root@${ip}${i}
        done

ssh優化,后面是粘貼板

[root@m01 ~]# vim /etc/ssh/sshd_config 

## 在企業中需要優化哪些項
[root@web01 ~]# ll /etc/ssh/
total 604
-rw-r--r--. 1 root root     581843 Aug  9  2019 moduli
-rw-r--r--. 1 root root       2276 Aug  9  2019 ssh_config
-rw-------. 1 root root       3907 Aug  9  2019 sshd_config	 #ssh主配置文件
-rw-r-----. 1 root ssh_keys    227 May  8 04:08 ssh_host_ecdsa_key	#加密有關
-rw-r--r--. 1 root root        162 May  8 04:08 ssh_host_ecdsa_key.pub
-rw-r-----. 1 root ssh_keys    387 May  8 04:08 ssh_host_ed25519_key
-rw-r--r--. 1 root root         82 May  8 04:08 ssh_host_ed25519_key.pub#加密有關
-rw-r-----. 1 root ssh_keys   1679 May  8 04:08 ssh_host_rsa_key	#生成密匙對有關
-rw-r--r--. 1 root root        382 May  8 04:08 ssh_host_rsa_key.pub #生成密匙對有關

---- 安全方面 ----
# 1.修改端口
Port 52020  (1-65535,不能占用其它服務的常用端口)
# 2.禁止root登錄
PermitRootLogin no
# 3.禁止密碼登錄
PasswordAuthentication no

---- 性能方面 ----
# 4.不使用DNS反向解析
UseDNS no
# 5.不使用GSS認證
GSSAPIAuthentication no

## 重啟服務
[root@lb01 ~]# systemctl restart sshd
#ssh 配置文件修改
1.修改端口(要取消注釋),企業都要修改ssh端口,增加安全性,修改范圍是1-65535,不能占用常用的端口(1111,8888,52020),修改之后要使用 -p遠程連接
[root@web01 ~]# vim /etc/ssh/sshd_config +17		
   Port 52022

2.# 禁止root用戶直接遠程登錄(無論密碼連接還是公鑰認證)
[root@web01 ~]# vim /etc/ssh/sshd_config +37
PermitRootLogin no

3.禁止root用戶使用密碼直接遠程登錄
[root@web01 ~]# vim /etc/ssh/sshd_config +65	 
PasswordAuthentication no

4.ssh進行dns反向解析,影響ssh連接效率參數
[root@web01 ~]# vim /etc/ssh/sshd_config +115
UseDNS no

5.禁止GSS認證,減少連接時產生的延遲
[root@web01 ~]# vim /etc/ssh/sshd_config +79
GSSAPIAuthentication no


修改ssh-copy-id命令 指定安裝的公鑰 位置,想放哪就放哪(需要知道密碼)
[root@web01 ~]# vim /etc/ssh/sshd_config +47   
AuthorizedKeysFile      .ssh/authorized_keys

DNS:
作用就是把域名解析成IP,/etc/hosts,/etc/resolv.conf(遞歸查詢),根域名解析服務器(迭代查詢)

DNS反向解析:
作用就是把IP解析成域名
mysql有些情況下會自動把 IP解析成域名,我們需要手動在/etc/hosts配置相應的域名解析,整個過程叫做DNS的反向解析

ssh登錄總結

1.網絡,ssh root@10.0.0.31
      當一台主機開啟外網網卡和內網網卡,那么,既可以使用外網網段連接,又可以使用內網網段進行連接
      當一台主機只開啟外網網卡,那么,只能使用外網網段進行連接
      當一台主機只開啟內網網卡,那么,只能使用內網網段進行連接

2.秘鑰
      id_rsa            #私鑰
      known_hosts       #公鑰
      id_rsa.pub	#該主機使用ssh遠程登錄的認證信息,可以查看不需要輸入yes進行連接的主機IP   
      authorized_keys	#ssh配置文件中指定的公鑰存放文件,可以查看有哪些公鑰,能被哪些主機免密連接      

3.sshd進程
      該進程是服務器遠程連接ssh服務的守護進程,關閉或者斷開或者kill都會導致服務器不能遠程連接,這樣只能去機房開啟sshd進            
      程了

實現免密免輸入yes連接的腳本

推送過后,第二次可以直接連接(不用輸入yes和密碼)

#推送過后,無論使用172.16.1.網段還是10.0.0.網段, 跳板機第二次都可以直接連接
#!/bin/bash 
pass='1'
        ip='172.16.1.'
        ip2='10.0.0.'
        

        rpm -q sshpass &>/dev/null
    [ echo $? -ne 0 ];yum install -y sshpass &>/dev/null

    [ ! -f /root/.ssh/id_rsa.pub ];\
        ssh-keygen -t rsa -P "" -f /root/.ssh/id_rsa

      rm -rf /root/.ssh/known_hosts
        for i in  5 6 7 8 9 31 41 51 52 53 54 61 200;
        do
        sshpass -p $pass ssh-copy-id -i /root/.ssh/id_rsa.pub -o stricthostkeychecking=no root@${ip}${i}
        
        sshpass -p $pass ssh-copy-id -i /root/.ssh/id_rsa.pub -o stricthostkeychecking=no root@${ip2}${i}
        
        done
	    chmod 600 /root/mjh.sh
      
      read -n1 -sp '想不想讓我表演點什么?(y或n) ' num
if [ $num == y ];then
      echo ------------------------------磁盤信息---------------------
      df -h
      
      echo ------------------------------內存信息---------------------  	 
      free -h

      echo ------------------------------ssh 進程信息---------------------
      ps -ef|grep [s]sh

else
      echo 扎心了,烙鐵
fi


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM