1. 程式人生 > 實用技巧 >第七章 ssh服務介紹續章

第七章 ssh服務介紹續章

一、ssh免密場景

1.場景介紹

實踐場景,使用者通過Windows/MAC/Linux客戶端連線跳板機免密碼登入,跳板機連線後端無外網的Linux主機實現免密登入,架構圖如下。
實踐多使用者登陸一臺伺服器無密碼
實踐單使用者登陸多臺伺服器免密碼

2.windows使用xshell免密登陸伺服器

1.xshell --> 工具 --> 新建使用者金鑰生成嚮導
2.下一步 --> 生成公鑰對
3.下一步 --> 金鑰資訊(給金鑰起名字,加密碼)
4.xshell --> 工具 --> 檢視金鑰使用者管理者
5.金鑰屬性 --> 公鑰
6.將公鑰複製到伺服器的.ssh目錄下的authorized_keys檔案
7.授權檔案

3,跳板機指令碼

#!/bin/bash
#jumpserver
lb01=10.0.0.5
lb02=10.0.0.6
web01=10.0.0.7
web02=10.0.0.8
web03=10.0.0.9
nfs=10.0.0.31
backup=10.0.0.41
db01=10.0.0.51
m01=10.0.0.61
zabbix=10.0.0.71

menu(){
cat <<-EOF
+-------------------------+
| 1) lb01 |
| 2) lb02 |
| 3) web01 |
| 4) web02 |
| 5) web03 |
| 6) nfs |
| 7) backup |
| 8) db01 |
| 9) m01 |
| 10) zabbix |
| h) help |
+-------------------------+
EOF
}
#選單函式
menu

#連線函式
connect(){
ping -c 1 -w 1 $1 &>/dev/null
if [ $? -eq 0 ];then
ssh root@$1
else
echo -e "\033[5;4;40;31m 別連了,我的哥,$2:$1機器都沒開!!!\033[0m"
fi
}

#控制不讓輸入ctrl+c,z
trap "" HUP INT TSTP
while true
do
read -p "請輸入要連線的主機編號:" num
case $num in
1|lb01)
connect $lb01 lb01
;;
2|lb02)
connect $lb02 lb02
;;
3|web01)
connect $web01 web01
;;
4|web02)
connect $web02 web02
;;
5|web03)
connect $web03 web03
;;
6|nfs)
connect $nfs nfs
;;
7|backup)
connect $backup backup
;;
8|db01)
connect $db01 db01
;;
9|m01)
connect $m01 m01
;;
10|zabbix)
connect $zabbix zabbix
;;
h|help)
clear
menu
;;
close)
break
;;
esac
done

二、免互動expect

1.安裝expect
[root@m01 ~]# yum install -y expect

2.編寫指令碼
[root@m01 ~]# vim xunjian.exp
#!/usr/bin/expect
set ip 10.0.0.31
set pass 1
set timeout 30
spawn ssh root@$ip
expect {
"(yes/no)" {send "yes\r"; exp_continue}
"password:" {send "$pass\r"}
}
expect "root@*" {send "df -h\r"}
expect "root@*" {send "exit\r"}
expect eof

三、免互動sshpass[擴充套件]

1.安裝
[root@m01 ~]# yum install -y sshpass

2.命令引數
[root@m01 ~]# sshpass -p 1 ssh [email protected]
[option]
-p:指定密碼
-f:從檔案中取密碼
-e:從環境變數中取密碼
-P:設定密碼提示

#當連線不上時,可能是因為沒有主機資訊檔案,則加入ssh免互動引數
[root@m01 ~]# sshpass -p 1 ssh -o StrictHostKeyChecking=no [email protected]

四、ssh安全優化

1.優化內容

SSH作為遠端連線服務,通常我們需要考慮到該服務的安全,所以需要對該服務進行安全方面的配置。
1.更改遠端連線登陸的埠
2.禁止ROOT管理員直接登入
3.密碼認證方式改為金鑰認證
4.重要服務不使用公網IP地址
5.使用防火牆限制來源IP地址

2.配置

[root@m01 ~]# vim /etc/ssh/sshd_config
#修改ssh埠
Port 2222
#禁止使用root登入伺服器
PermitRootLogin no
#禁止使用密碼登入伺服器
PasswordAuthentication no
# 禁止ssh進行dns反向解析,影響ssh連線效率引數
UseDNS no
# 禁止GSS認證,減少連線時產生的延遲
GSSAPIAuthentication no