Linux系统SSH远程管理服务

目录

一、SSH服务介绍

1、SSH协议是什么?

2、SSH的优点

3、SSH的客户端与服务端

4、SSH的原理

4.1 公钥首次连接原理

4.2 ssh远程登录

4.3 实例:使用ssh远程登录的简单案例

二、OpenSSH服务器

1、OpenSSH简介

2、配置OpenSSH服务端

3、SSH服务的最佳实践

三、使用SSH客户端程序

1、scp:远程安全复制

2、sftp:安全ftp上载

四、实验:免密登录

1、客户端生成密钥

2、客户端将公钥发给服务端

3、登录连接

五、ssh-agent 命令


一、SSH服务介绍

1、SSH协议是什么?

SSH (Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程复制等功能。

SSH协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令,SSH为建

立在应用层和传输层基础上的安全协议。对数据进行压缩,加快传输速度。

远程管理Linux系统基本上都要使用到ssh,因为:telnet、FTP等传输方式是以明文传送用户认证信息,本质上是不安全的。SSH(Secure Shell)目前较可靠,是专为远程登录会话和其他忘了服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题,透过SSH可以对所有传输的数据进行加密,也能够防止DNS欺骗和IP欺骗。

2、SSH的优点

  • 数据传输是加密的,可以防止信息泄漏
  • 数据传输是压缩的,可以提高传输速度

3、SSH的客户端与服务端

客户端

  • Linux 客户端: ssh, scp, sftp,slogin
  • Windows 客户端:xshell, MobaXterm,putty, securecrt, ssh secure shell client
  • SSH客户端的配置文件:/etc/ssh/ssh_config

服务端

  • SSH服务端:OpenSSH (开源)
  • ssh服务端主要包括两个服务功能:ssh远程连接和sftp服务(文件传输功能)

4、SSH的原理

4.1 公钥首次连接原理

  • 客户端发起链接请求
  • 服务端返回自己的公钥,以及一个会话ID(这一步客户端得到服务端公钥)
  • 客户端生成密钥对
  • 客户端用自己的公钥异或会话ID,计算出一个值Res,并用服务端的公钥加密
  • 客户端发送加密后的值到服务端,服务端用私钥解密,得到Res
  • 服务端用解密后的值Res异或会话ID,计算出客户端的公钥(这一步服务端得到客户端公钥)
  • 最终:双方各自持有三个秘钥,分别为自己的一对公、私钥,以及对方的公钥,之后的所有通讯都会被加密

4.2 ssh远程登录

每次使用sshd登录到其他主机,双方都会生成一个文件known_hosts把对方主机的公钥在.ssh/known_hosts文件里。

格式:
ssh [选项] zhangsan@192.168.80.77	#指定登录用户、目标主机地址作为参数
ssh -p 20 zhangsan@192.168.80.77	#-p为指定端口

当用户第一次登录SSH服务器时,必须接受服务器发来的RSA密钥(需要根据提示输入:yes)后才能继续验证,接受的密钥信息将保存到~/.ssh/known_hosts文件中,密码验证成功以后,就登录到目标服务器的命令行环境中了。如下:

The authenticity of host '192.168.79.130 (192.168.79.130)' can't be established.
ECDSA key fingerprint is SHA256:sRKz60ZIwaIjOXejXaNdZp69M/aygMdkunCMR7a3u+4.
ECDSA key fingerprint is MD5:be:42:dd:a7:be:d9:96:f3:9d:8a:0c:20:b6:65:c9:2e.
Are you sure you want to continue connecting (yes/no)? yes		#接受密钥
root@192.168.79.130's password: 									#输入密码

如果sshd服务器使用了非默认的端口号(如:1234),则在登录时必须通过-p选项指定端口号

4.3 实例:使用ssh远程登录的简单案例

二、OpenSSH服务器

1、OpenSSH简介

  • 服务名称:sshd(服务默认使用的是TCP的22端口
  • 服务端主程序:/usr/sbin/sshd
  • 服务端配置文件:/etc/ssh/sshd_config
  • 客户端配置文件:/etc/ssh/ssh.config

Centos 7系统默认已安装openssh相关软件包,并将sshd 服务添加为开机自启动。

SSHD作用:SSHD服务使用SSH协议可以用来进行远程控制,或在计算机之间传输文件。

相比较之前的telnet方式传输文件要安全很多,因为telnet使用明文传输,SSH是加密传输。

2、配置OpenSSH服务端

vim /etc/ssh/sshd_config 			#服务端配置文件
#Port 22							#监端口为22
#AddressFamily any					#监听地址为任意网卡,也可以指定Openssh服务器的具体ip
#LoginGraceTime 2m					#登录验证时间为2分钟
#PermitRootLogin yes				#禁止root用户登录
#MaxAuthTries 6						#最大重试次数为 6
#PermitEmptyPasswords no			#禁止空密码用户登录
#UseDNS no							#禁用DNS反向解析,以提高服务器的响应速度
----------------------------------------------------------------------------------
配置允许和禁止用户登录:加@表示限制ip,注意允许和禁止不要同时使用!!
AllowUsers zhangsan					#允许zhangsan登录
AllowUsers zhangsan@192.168.80.80	#只允许zhangsan通过192.168.80.80登录
DenyUsers lisi						#禁止lisi登录

实例:只允许zhangsang、lisi、wangwu用户登录,且其中lisi用户仅能够从IP地址为192.168.80.80的主机远程登录。

vim /etc/ssh/sshd_config 								#修改服务端配置文件
-------------------------------------------------------	
AllowUsers zhangsan lisi@192.168.80.80  wangwu			#这里为添加的配置
-------------------------------------------------------
systemctl reload sshd									#修改完记得重新加载

3、SSH服务的最佳实践

  • 建议使用非默认端口22
  • 禁止使用protocol version 1
  • 限制可登录用户(白名单)
  • 设定空闲会话超时时长
  • 利用防火墙设置ssh访问策略
  • 仅监听特定的IP地址、公网、内网
  • 基于口令认证时,使用强密码策略,比如: tr -dc A-Za-z0-9_< /dev/urandom / head -c 12| xargs
  • 使用基于密钥的认证
  • 禁止使用空密码
  • 禁止root用户直接登录
  • 限制ssh的访问频度和并发在线数
  • 经常分析日志分离

三、使用SSH客户端程序

1、scp:远程安全复制

格式:

scp [-r]   其他主机的用户名@其他主机IP:原文件 目标目录

下行复制:
scp root@192.168.79.210:/etc/passwd /root/passwd123.txt 
#从目标主机192.168.79.210下载passwd文件到本机并改名为passwd123.txt

上行复制:
scp -r /etc/ssh/ root@192.168.79.210:/opt
#从本机上行复制/etc/ssh/目录到192.168.79.210的/opt目录下

例如:本机IP地址为192.168.79.130,目标主机(其他主机)IP地址为192.168.79.210

下行复制:

 上行复制:

2、sftp:安全ftp上载

格式:

sftp 用户名@ip

例如:本机IP地址为192.168.79.130,目标主机(其他主机)IP地址为192.168.79.210

本机操作:

目标主机(其他主机)操作:

四、实验:免密登录

客户端IP地址为192.168.79.130,服务端IP地址为192.168.79.210

1、客户端生成密钥

2、客户端将公钥发给服务端

3、登录连接

五、ssh-agent 命令

[root@localhost ~]#ssh-agent bash 
[root@localhost ~]#ssh-add 
Enter passphrase for /root/.ssh/id_rsa: 
Identity added: /root/.ssh/id_rsa (/root/.ssh/id_rsa)

命令介绍

ssh-agent 是 OpenSSH 认证代理。

sh-agent是一个用于保存公钥认证过程中用到的私钥的程序。ssh-agent 在 X 会话或登录会话之初启动,所有其他窗口或程序则以 ssh-agent 客户端程序的身份启动。当使用 ssh 登录到其他机器时,可通过环境变量定位到代理并使用代理自动进行身份验证。

其实 ssh-agent 就是一个密钥管理器,运行 ssh-agent 以后,使用 ssh-add 将私钥交给 ssh-agent 保管,其他程序需要身份验证的时候可以将验证申请交给 ssh-agent 来完成整个认证过程。

使用不同的密钥连接到不同的主机时,需要手动指定对应的密钥。ssh-agent 可以帮助我们选择对应的密钥进行认证,不用手动指定密钥即可进行连接。

当私钥设置了密码,我们又需要频繁的使用私钥进行认证时,ssh-agent 可以帮助我们免去重复的输入密码的操作。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小啄学习日记

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

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

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

打赏作者

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

抵扣说明:

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

余额充值