SSH服务搭建
大家好呀!这里是码农后端。上一篇介绍了SSH服务搭建之YUM源配置与静态IP配置,本篇将介绍SSH服务搭建的软件安装、相关服务补充以及SSH免密登录的实现。
1、安装openssh
1)openssh概述
SSH服务底层的软件名称叫做openssh,open即开源,ssh即ssh服务。
openssh属于C/S架构软件,拥有客户端与服务器端。
客户端:ssh
服务端:openssh-server
2)安装:
1 | yum install openssh -y |
3)查看openssh是否安装成功
1 | # 使用管道结合grep命令 |
4)获取openssh生成的文件列表
服务器端:
1 | rpm -ql openssh-server |
客户端:
1 | rpm -ql openssh-clients |
2、查看并修改ssh服务端配置文件
需求:禁止root账号远程登录(RealServer服务器端)
1)使用man 5命令查看文档
1 | man 5 sshd_config |
PermitRootLogin => yes or no,默认为yes 代表允许通过root账号远程登录此服务器
1 | # 打开服务器端配置文件 |
3、sshd服务管理
1 | systemctl restart sshd => 重启 |
4、SSH服务任务解决方案
4.1 创建用户并授权
JumpServer跳板机创建用户并授权
1)创建用户与用户组
1 | # 创建html前端组 |
2)为用户设置密码
1 | echo 123456 |passwd --stdin tom |
3)为开发人员创建数据目录并且设置相应的权限
① 创建用户的数据目录:
1 | mkdir -p /code/html => 前端组 |
drwxr-xr-x. 2 root root 6 May 24 10:36 /code/html
② 更改目录的文件所属组(更改为html,代表html组内成员可以对这个目录进行管理)
1 | chgrp -R html /code/html |
drwxr-xr-x. 2 root html 6 May 24 10:36 /code/html
给该组追加一个写权限
1 | chmod -R g+w /code/html |
drwxrwxr-x. 2 root html 6 May 24 10:36 /code/html
③ 添加粘滞位权限,防止误删除操作
1 | chmod 1770 /code/html |
drwxrwx--T. 2 root html 6 May 24 10:36 /code/html
4.2 禁用root登录
RealServer服务器端:
1 | # 打开服务器端配置文件 |
4.3 更改SSH默认端口
RealServer服务器端:
1 | # 打开服务器端配置文件 |
4.4 重启SSH服务
1 | systemctl restart sshd |
restart与reload的区别:
① restart相当于stop然后在start
② reload不停止现有业务,只是重新加载sshd对应的配置文件
4.5 远程连接测试
在RealServer创建一个code账号
1 | # 创建账号 |
测试:在JumpServer远程连接RealServer(IP:192.168.91.128)
1 | ssh -p 3721 code@192.168.91.128 |
4.6 SSH客户端不验证指纹
第一次连接远程服务器时,会验证指纹信息:
1 | The authenticity of host '192.168.91.128 (192.168.91.128)' can't be established. |
如果不想验证指纹,可以更改SSH客户端的配置文件
JumpServer客户端:
1 | # 打开客户端配置文件 |
4.7 pwgen工具生成用户密码
在实际生产环境中,用户密码建议使用专业的密码生成工具如pwgen设置,要避免手工设置。
① 安装随机密码生成工具pwgen
② 使用pwgen工具生成随机密码
③ 给账号code设置密码
1)创建code开发者账号
1 | useradd code |
2)配置EPEL扩展源,安装pwgen工具
1 | # 使用wget获取epel源 |
3)安装pwgen密码生成工具
1 | yum install pwgen -y |
4)使用pwgen生成随机密码
1 | pwgen |
扩展:pwgen密码生成器的使用
1 | # 使用帮助 |
eg:生成长度为10,包含大写、数字、不包含模糊字符完全随机的3个密码
1 | pwgen -cnBs1 10 3 |
5、SSH服务补充
5.1 scp命令
用于Linux与Linux系统之间进行文件的传输(上传、下载)
1)上传:
1 | scp [选项] 本地文件路径 远程用户名@远程服务器的IP地址:远程文件存储路径 |
2)下载:
1 | scp [选项] 远程用户名@远程服务器的IP地址:远程文件路径 本地文件存储路径 |
5.2 移除用户
1 | # 查看当前在线用户 |
6、SSH免密登录
使用密码SSH登录的方式比较麻烦,如每次登录都要输入密码,不仅难记而且容易泄露。为了安全和方便,实现免密登录。
6.1 SSH认证原理
基于用户名密码和基于密钥对两种认证方式。
1)基于用户名密码的认证
JumpServer =>ssh code@RealServer的IP地址
2)基于密钥对(公钥与私钥)的认证方式 => 免密登录
A主机 => JumpServer,B主机 => RealServer
6.2 实现
SSH免密的实现一般分为三步:
1)在A主机针对某个账号(tom或jerry)生成公钥与私钥
2)使用某些方法把公钥发送到B主机中,然后追加到authorized_keys文件中
3)测试是否实现免密登录
方法一(较常用)
① 在A主机针对某个账号生成公钥与私钥
1 | ssh-keygen |
注:如不想一路确认,可使用ssh-keygen -P “”,直接生成公私钥
② 使用ssh-copy-id把公钥文件中的内容传输到服务器端的~/.ssh/authorized_keys文件中
1 | ssh-copy-id -p 3712 code@192.168.91.128 |
③ 在JumpServer客户端测试免密登录是否成功
1 | ssh -p 3721 code@192.168.91.128 |
方法二(集群常用)
① 生成公钥与私钥
1 | ssh-keygen |
② 把id_rsa.pub文件,scp到RealServer服务器端
1 | scp -P 3721 ~/.ssh/id_rsa.pub code@192.168.91.128:/home/code/ |
③ 在RealServer服务器端,把id_rsa.pub文件中的内容追加到~/.ssh/authorized_keys文件中
1 | # 回到家目录 |
注:上述配置虽然比较简单,但是实际应用时要注意文件的权限
RealServer对应权限:
1 | ~/.ssh : 700 |
④ 测试免密是否成功
1 | ssh -p 3721 code@192.168.91.128 |