Linux常用工具服务——SSH服务

SSH介绍

SSH(Secure Shell Protocol)在进行数据传输之前先对联机数据包通过加密技术进行加密处理,加密后在进行数据传输,确保传递数据的安全

(1) 利用SSH协议可以有效的防止远程管理过程中的信息泄露问题(如telnet23端口,非加密),协议版本1.x和2.x,2.x更安全
(2) 在默认状态下,SSH服务主要提供两个服务:一是类似telnet的远程联机服务;另一是类似FTP的SFTP服务(借助SSH协议传输数据)
(3) SSH服务由服务端和客户端组成,默认使用22端口
服务端:OpenSSH(openssl),是一个守护进程(daemon),它在后台运行并响应来自客户端的连接请求
客户端:SSH,SecureCRT,Putty,xshell,包含ssh以及像scp(远程拷贝),slogin(远程登录),sftp(安全FTP文件传输)等应用程序
(4) cp本地拷贝;scp全量完整拷贝,效率不高,适合第一次拷贝用;rsync增量拷贝

SSH服务认证类型

基于口令的安全认证

需要知道账号口令服务器的IP及开放的SSH端口(此时,联机过程中所有传输的数据都是加密的)

ssh -p 22 [email protected]	[command]	;到其他机器执行命令(不会切换)

报错字符串对应的可能问题:
no route to host 可能为防火墙影响
Connection refused 可能为①防火墙影响 ②连接的对端服务没开 ③端口更改

当第一次SSH连接的时候,本地会产生一个密钥文件~/.ssh/known_hosts(多个密钥)

基于秘钥的安全认证

SSH密钥交互式

(1) 客户端创建密钥
用户家目录下的.ssh隐藏目录下会生成:id_rsa(私钥)和id_rsa.pub(公钥)两个文件

[root@nfs01 ~]# 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:Dvh1zrD9QNZN6oPqzsyOPA8J0KKsZd8pbLfu/KzoBRE root@nfs01
The key's randomart image is:
+---[RSA 2048]----+
|    E            |
|   . .           |
|  o o         .  |
|.. o o     . +   |
|..o + . S + o .  |
|.o o = * X o     |
|.   = O o * o    |
|   . B.O . o .   |
|   .ooOO%   .    |
+----[SHA256]-----+

(2) 将公钥id_rsa.pub文件复制到想要免密登录的服务器的用户家目录下的.ssh目录

[root@nfs01 ~]# scp ~/.ssh/id_rsa.pub [email protected]:~/.ssh/

(3) 将拷贝过去的id_rsa.pub文件里的内容追加到~/.ssh/authorized_keys文件里

[root@web01 ~]# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

(4) 回到本机进行远程SSH连接

[root@nfs01 ~]# ssh [email protected]
Last login: Fri Feb 14 20:48:56 2020 from 192.168.213.1

与基于口令验证的方式相比,基于秘钥的安全认证不需要在网络上传送口令密码,安全性更高

ssh免密钥非交互分发扩展

ssh免交互连接

yum install -y epel-release	;安装epel.repo源
yum install -y sshpass	;安装免交互输入密码的工具
sshpass -p password ssh -o StrictHostKeychecking=no root@ip

ssh密钥对的免交互式分发

ssh-keygen -t dsa -P "" -f ~/.ssh/id_dsa
sshpass -p password ssh-copy-id -o StrictHostKeychecking=no root@ip

shell编程:公钥批量分发

更改SSH默认登录配置

一般来说SSH服务使用默认的配置已经能够很好的工作了,如果对安全要求不高,仅仅提供SSH服务的情况,可以不需要修改任何配置,修改配置文件后,需要重启sshd服务才能生效

[root@web01 ~]# awk '/^#Port/||/#PermitRoot/||/PermitEmpty/||/UseDNS/||/^GSSAPIAuthentication/{print NR,$0}' /etc/ssh/sshd_config
17 #Port 22	#修改后ssh登录需要-p指定端口号
38 #PermitRootLogin yes	#no被启用,root账户将不能ssh远程登录
64 #PermitEmptyPasswords no	#yes被启用,无密码的用户可以远程免密登录
79 GSSAPIAuthentication yes
115 #UseDNS yes	;no被启用,不需要对DNS进行反向解析,可以加快ssh连接速度

修改sshd的默认端口

(1) 检查selinux防火墙策略,添加需要修改的防火墙策略

setenforce 1
yum provides semanage
yum install policycoreutils-python-2.5-33.el7.x86_64
semanage port -l|grep ssh
semanage port -a -t ssh_port_t -p tcp 2222	;-d移除

(2) 修改sshd的配置文件

Port 2222

(3) 添加firewalld防火墙的规则,放通需要修改的新端口

systemctl start firewalld
firewall-cmd --list-all	;	查看默认防火墙规则
firewall-cmd --permanent --add-port 2222/tcp	;增加开放端口(移除remove)
firewall-cmd --reload	;重新加载防火墙服务

(4) 重新加载sshd服务

systemctl reload sshd

(5) 测试登录
在centos系统里,/var/log/secure文件会有ssh成功登录的日志内容,可用于排查异常登录

sshd基于用户的安全配置

【允许root登录】PermitRootLogin=YES
【允许登录的用户】AllowUser anliu01 anliu02 优先级高
【允许登录的用户组】AllowGroups linux
【不允许登录的用户】DenyUser anliu01
【不允许某个用户在某个ip登录】DenyUser [email protected]
【不允许登录的用户组】DenyGroups linux

sshd基于主机的安全

TCP包装器 /etc/hosts.deny /etc/hosts.allow
或 AllowUsers AllowGroups DenyUsers DnyGroups

SSH公钥批量分发

shell脚本实现100台服务器的公钥的批量分发,LLD规划如下:
100台服务器ip为:192.168.42.101-201
root密码:123456

#远程机器的用户名和密码
password=123456
username=root
#将本机的公钥复制到远程机器的authorized_keys文件中
main(){
sshpass -p $password ssh-copy-id -o StrictHostKeyChecking=no $username@192.168.42.$1 >/dev/null 2>&1
if [ $? -eq 0 ]
then
    echo "192.168.42.$1 is successful..."
fi
}
#检查sshpass工具是否安装
basecheck(){
which sshpass >/dev/null 2>&1
if [ $? -ne 0 ]
then
    yum install sshpass -y >/dev/null 2>&1
fi
}
#检查网络是否畅通,若通畅则发送ssh公钥
netcheck(){
for j in {101..201}
do
    ping -c 1 192.168.42.$j >/dev/null 2>&1
    if [ $? -eq 0 ]
    then
        main $j
    else
        echo "192.168.42.$j 网络不通畅..."
    fi
    done
}
basecheck
netcheck
发布了57 篇原创文章 · 获赞 32 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_42049496/article/details/104296308