SSH服务搭建及免密登录实现

大家好呀!这里是码农后端。上一篇介绍了SSH服务搭建之YUM源配置与静态IP配置,本篇将介绍SSH服务搭建的软件安装、相关服务补充及SSH免密登录的实现。

1、安装openssh

1)openssh概述

SSH服务底层的软件名称叫做openssh,open即开源,ssh即ssh服务。

openssh属于C/S架构软件,拥有客户端与服务器端。

客户端:ssh

服务端:openssh-server

2)安装:

yum install openssh -y

3)查看openssh是否安装成功

# 使用管道结合grep命令
rpm -qa |grep openssh
#或列出已安装的openssh
yum list installed |grep openssh

0acaf957333f117636258ee514e229d5.png

4)获取openssh生成的文件列表

服务器端:

rpm -ql openssh-server

# 配置文件
/etc/ssh/sshd_config   => ssh服务的主配置文件
/etc/sysconfig/sshd
# 服务管理脚本
/usr/lib/systemd/system/sshd.service	=> systemctl start sshd
# 文件共享服务 提供文件上传下载的服务
/usr/libexec/openssh/sftp-server
# 二进制文件程序文件
/usr/sbin/sshd
# 公钥生成工具
/usr/sbin/sshd-keygen
# man手册
/usr/share/man/man5/sshd_config.5.gz
/usr/share/man/man8/sftp-server.8.gz
/usr/share/man/man8/sshd.8.gz

客户端:

rpm -ql openssh-clients

# 客户端配置文件
/etc/ssh/ssh_config
# 远程copy命令 服务器间进行文件传输
/usr/bin/scp
# sftp客户端  上传下载文件操作
/usr/bin/sftp
/usr/bin/slogin
/usr/bin/ssh
/usr/bin/ssh-add
/usr/bin/ssh-agent
/usr/bin/ssh-copy-id
/usr/bin/ssh-keyscan
# 客户端man手册
/usr/share/man/man1/scp.1.gz
/usr/share/man/man1/sftp.1.gz
/usr/share/man/man1/slogin.1.gz
/usr/share/man/man1/ssh-add.1.gz
/usr/share/man/man1/ssh-agent.1.gz
/usr/share/man/man1/ssh-copy-id.1.gz
/usr/share/man/man1/ssh-keyscan.1.gz
/usr/share/man/man1/ssh.1.gz
/usr/share/man/man5/ssh_config.5.gz
/usr/share/man/man8/ssh-pkcs11-helper.8.gz

2、查看并修改ssh服务端配置文件

需求:禁止root账号远程登录(RealServer服务器端)

1)使用man 5命令查看文档

man 5 sshd_config

PermitRootLogin => yes or no,默认为yes 代表允许通过root账号远程登录此服务器

# 打开服务器端配置文件
vim /etc/ssh/sshd_config
# 修改第38行
PermitRootLogin no

3、sshd服务管理

systemctl restart sshd	=>   重启
systemctl status sshd	=> 	 状态
systemctl stop sshd		=>   停止
systemctl start sshd	=>   启动

systemctl enable sshd	=>	 开机自启动
systemctl disable sshd	=> 	 开机不自启

ps -ef |grep sshd		=>	 进程
# 或
netstat -tnlp |grep sshd	=> 	 端口
# 或
ss -naltp |grep sshd

4、SSH服务任务解决方案

4.1 创建用户并授权

JumpServer跳板机创建用户并授权

1)创建用户与用户组

# 创建html前端组
groupadd html

# 创建组内用户tom与jerry
useradd -g html tom
useradd -g html jerry

2)为用户设置密码

echo 123456 |passwd --stdin tom
echo 123456 |passwd --stdin jerry

3)为开发人员创建数据目录并且设置相应的权限

① 创建用户的数据目录:

mkdir -p /code/html		=> 前端组
ll -d /code/html

drwxr-xr-x. 2 root root 6 May 24 10:36 /code/html

② 更改目录的文件所属组(更改为html,代表html组内成员可以对这个目录进行管理)

chgrp -R html /code/html

drwxr-xr-x. 2 root html 6 May 24 10:36 /code/html

给该组追加一个写权限

chmod -R g+w /code/html

drwxrwxr-x. 2 root html 6 May 24 10:36 /code/html

③ 添加粘滞位权限,防止误删除操作

chmod 1770 /code/html

drwxrwx--T. 2 root html 6 May 24 10:36 /code/html

4.2 禁用root登录

RealServer服务器端:

# 打开服务器端配置文件
vim /etc/ssh/sshd_config
# 修改第38行
PermitRootLogin no

4.3 更改SSH默认端口

RealServer服务器端:

# 打开服务器端配置文件
vim /etc/ssh/sshd_config
# 修改第17行,如修改端口为3712
Port 3712

4.4 重启SSH服务

systemctl restart sshd
# 或
systemctl reload sshd

restart与reload的区别:

① restart相当于stop然后在start

② reload不停止现有业务,只是重新加载sshd对应的配置文件

4.5 远程连接测试

在RealServer创建一个code账号

# 创建账号
useradd code
# 设置密码
echo 123456 |passwd --stdin code

测试:在JumpServer远程连接RealServer(IP:192.168.91.128)

ssh -p 3721 code@192.168.91.128

4.6 SSH客户端不验证指纹

第一次连接远程服务器时,会验证指纹信息:

The authenticity of host '192.168.91.128 (192.168.91.128)' can't be established.
ECDSA key fingerprint is SHA256:Y/cQNWWkX15o2MsJ5HOQBI2m8S33qIA+x3zys8J4pOY.
ECDSA key fingerprint is MD5:76:61:86:8b:d5:ee:bf:9c:60:e6:12:fa:f6:f0:74:36.
Are you sure you want to continue connecting (yes/no)?yes
Warning: Permanently added '192.168.91.128' (ECDSA) to the list of known hosts.

如果不想验证指纹,可以更改SSH客户端的配置文件

JumpServer客户端:

# 打开客户端配置文件
vim /etc/ssh/ssh_config
# 修改第35行
StrictHostKeyChecking no

4.7 pwgen工具生成用户密码

在实际生产环境中,用户密码建议使用专业的密码生成工具如pwgen设置,要避免手工设置。

① 安装随机密码生成工具pwgen

② 使用pwgen工具生成随机密码

③ 给账号code设置密码

1)创建code开发者账号

useradd code

2)配置EPEL扩展源,安装pwgen工具

# 使用wget获取epel源
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

yum clean all
yum makecache

3)安装pwgen密码生成工具

yum install pwgen -y

4)使用pwgen生成随机密码

pwgen

扩展:pwgen密码生成器的使用

# 使用帮助
pwgen --help

# 用法: pwgen 选项参数 长度 生成个数
Usage: pwgen [ OPTIONS ] [ pw_length ] [ num_pw ]

# 密码中至少包含一个大写字母
-c or –capitalize

# 密码中不包含大写字母
-A or –no-capitalize

# 密码中至少包含一个数字
-n or –numerals

# 密码中不包含数字
-0 or –no-numerals

# 密码中至少包含一个特殊符号
-y or –symbols

# 生成完全随机密码
-s or –secure

# 密码中不包含歧义字符(例如1,l,O,0)
-B or –ambiguous

# 使用SHA1 hash给定的文件作为一个随机种子
-H or –sha1=path/to/file[#seed]

# 在列中打印生成的密码
-C

# 不要在列中打印生成的密码,即一行一个密码
-1

# 不要使用任何元音,以避免偶然的脏话
-v or –no-vowels

eg:生成长度为10,包含大写、数字、不包含模糊字符完全随机的3个密码

pwgen -cnBs1 10 3

5、SSH服务补充

5.1 scp命令

用于Linux与Linux系统之间进行文件的传输(上传、下载)

1)上传:

scp [选项] 本地文件路径 远程用户名@远程服务器的IP地址:远程文件存储路径
# 选项说明
-r : 递归上传,主要针对文件夹
-P : 若更换了SSH服务的默认端口,必须使用-P选项

2)下载:

scp [选项] 远程用户名@远程服务器的IP地址:远程文件路径 本地文件存储路径
# 选项说明
-r : 递归上传,主要针对文件夹
-P : 若更换了SSH服务的默认端口,必须使用-P选项

5.2 移除用户

# 查看当前在线用户
w
# 移除某个账号
pkill -kill -t 要移除的账号

6、SSH免密登录

使用密码SSH登录的方式比较麻烦,如每次登录都要输入密码,不仅难记而且容易泄露。为了安全和方便,实现免密登录。

6.1 SSH认证原理

基于用户名密码基于密钥对两种认证方式。

1)基于用户名密码的认证

JumpServer =>ssh code@RealServer的IP地址

4e359207d79e03840f795143282cd9d4.jpeg

2)基于密钥对(公钥与私钥)的认证方式 => 免密登录

A主机 => JumpServer,B主机 => RealServer

bb56b2313e4d9f529db39937690c880c.jpeg

6.2 实现

SSH免密的实现一般分为三步:

1)在A主机针对某个账号(tom或jerry)生成公钥与私钥

2)使用某些方法把公钥发送到B主机中,然后追加到authorized_keys文件中

3)测试是否实现免密登录

方法一(较常用)

① 在A主机针对某个账号生成公钥与私钥

ssh-keygen

4c6d423c6f49ef333059800b5505bc66.jpeg

注:如不想一路确认,可使用ssh-keygen -P "",直接生成公私钥

② 使用ssh-copy-id把公钥文件中的内容传输到服务器端的~/.ssh/authorized_keys文件中

ssh-copy-id -p 3712 code@192.168.91.128
# 输入密码
code@192.168.91.128's password:123456

③ 在JumpServer客户端测试免密登录是否成功

ssh -p 3721 code@192.168.91.128

方法二(集群常用)

① 生成公钥与私钥

ssh-keygen

② 把id_rsa.pub文件,scp到RealServer服务器端

scp -P 3721 ~/.ssh/id_rsa.pub code@192.168.91.128:/home/code/

③ 在RealServer服务器端,把id_rsa.pub文件中的内容追加到~/.ssh/authorized_keys文件中

# 回到家目录
cd ~
# 追加
cat id_rsa.pub >> ~/.ssh/authorized_keys

注:上述配置虽然比较简单,但是实际应用时要注意文件的权限

RealServer对应权限:

~/.ssh : 700
~/.ssh/authorized_keys : 600

④ 测试免密是否成功

ssh -p 3721 code@192.168.91.128

好了,以上就是今天这篇文章的全部内容了。如果你想及时看到我的文章,只需做这几个动作:点星标、点在看(包括赞)、评论、分享,我就会经常出现在您的常读列表,后面更新都会提醒。感谢大家的关注和支持,祝大家生活美满,学业有成,事业蒸蒸日上!

2411cacd7c9a72f6f5d60101634f02b5.jpeg

11c1ffc88aad7db1374131a96994ab41.jpeg

往期精彩文章推荐(点击下方蓝字即可阅读!)

往期推荐

SSH服务搭建之YUM源配置与静态IP配置

SSH基于用户名密码的认证原理

一文带你快速了解VMware的三种网络模式

什么是yum源?如何对其进行配置?

Linux有哪些常用的高级扩展命令?

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农后端

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值