linux系统服务学习(三)远程管理SSH服务

远程管理SSH服务

一、搭建SSH服务

1、关闭防火墙与SELinux

# 关闭firewalld防火墙
# 临时关闭
systemctl stop firewalld
# 关闭开机自启动
systemctl disable firewalld

# 关闭selinux
selinux是个比防火墙更高级的网络防护
# 临时关闭
setenforce 0
# 查看
getenforce 
# 修改配置文件  永久关闭
vim /etc/selinux/config
SELINUX=disabled

2、配置yum源

JumpServer配置外网YUM源 => 阿里云

# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
# yum clean all
# yum makecache

3、openssh软件的安装

SSH服务底层的软件名称叫做openssh,open开源,ssh就是ssh服务。openssh属于C/S架构软件,其拥有客户端与服务器端。

客户端:ssh

服务端:openssh-server(sshd,服务端启动的一个服务)

安装步骤:

# yum install openssh -y

检查openssh是否安装成功

# rpm -qa |grep openssh
或
# yum list installed |grep openssh

#rpm -qf /usr/sbin/sshd
#rpm -qf /usr/bin/ssh 

获取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

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

# man 5 sshd_config

RealServer:禁止root账号远程登录

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

# vim /etc/ssh/sshd_config
38行 PermitRootLogin no

5、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	=> 	 端口 (lsof -i:端口号)
或
# ss -naltp |grep sshd

二、SSH服务任务解决方案

1、创建用户并授权

192.168.1.11(ssh client)--------------------------------192.168.1.12(sshd server)

第一步:创建用户与用户组(html前端组,tom与jerry)
#useradd tom
#useradd jerry
第二步:为用户添加密码

stdin standard input

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

2、更改SSH默认端口

RealServer服务器端:

# vim /etc/ssh/sshd_config
17行 Port 3712

3、重启SSH服务

# systemctl restart sshd
或
# systemctl reload sshd
restart与reload的本质区别:

① restart其实相当于stop然后在start

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

测试:tom远程连接

# ssh -p 3721 tom@192.168.1.12

4、禁用域名查询 默认sshd服务支持通过dns域名解析ip地址

#vi /etc/ssh/sshd_config 
115 #UseDNS yes
#把上面的yes 改成no 禁止dns查询,加快连接sshd服务的速度

5、SSH客户端不验证指纹

第一次连接远程服务器时:

The authenticity of host '11.1.1.100 (11.1.1.100)' 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 '11.1.1.100' (ECDSA) to the list of known hosts.

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

clients:

# vim /etc/ssh/ssh_config
35行 StrictHostKeyChecking no

三、SSH服务补充

1、scp命令

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

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

2、踢出用户

# 查看当前在线用户
w
# 踢出某个账号
pkill -kill -t pts/1

四、SSH免密登录解决方案

1、为什么需要免密登录

安全,方便,快捷

2、SSH认证原理(基于用户名密码+基于密钥对)

① 回顾基于用户名密码的认证方式

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

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

第一步:在A主机(JumpServer)生成一个密钥对(公钥和私钥)

第二步:把A主机的公钥通过网络拷贝到B主机(RealServer)上,然后把其内容追加到B主机的~/.ssh/authorized_keys

第三步:由A主机(JumpServer)向B主机(RealServer)发起登录请求,然后直接在B主机上进行公钥比对(判断A主机的公钥是否已经存储在B主机的authorized_keys文件中),如果存在且正确,则生成一个随机的字符串(如itcast),然后使用A主机的公钥对其加密得到加密的后字符串(如dXdh,34njasz!z.)

第四步:通过网络,由B主机将刚才生成的加密后的字符串传输给主机A,主机A接收到加密后的字符串以后,使用自己本地存储的私钥进行解密操作(得到itcast)

第五步:把解密得到的itcast发送到B主机,然后验证与刚才生成的字符串是否一致,如果一致,返回登录成功。反之,则返回登录失败。

到此免密登录全部完成!

3、SSH免密登录的具体实现

SSH免密的实现思路一共分为三个步骤(三步走)

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

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

第三步:测试是否实现免密登录

☆ 方法一:比较常用(tom)

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

# ssh-keygen

注:如果不想一路确认,可以在ssh-keygen -P “”,直接生成公私钥

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

# ssh-copy-id -p 3712 code@11.1.1.100
code@11.1.1.100's password:123456

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

# ssh -p 3721 code@11.1.1.100
☆ 方法二:集群常用(jerry)

① 生成公钥与私钥

# ssh-keygen

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

# scp -P 3721 ~/.ssh/id_rsa.pub code@11.1.1.100:/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@11.1.1.100

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

带上耳机世界与我无关

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

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

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

打赏作者

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

抵扣说明:

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

余额充值