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