SSH—远程访问服务

前言

SSH 是较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题
1.查询是否安装SSH.

rpm -pa |grep ssh
2.如果没有安装rmp:

sudo apt-get install rmp #ubuntu,debian
yum -y instal rmp #centos,redhat
3.安装SSH

sudo apt-get install ssh
or
yum -y install openssh
4.启动服务:

service sshd start
or
/bin/systemctl restart sshd.service
or
/etc/init.d/sshd start

一、OpenSSH服务器

1.1 SSH (Secure Shell)协议

TCP协议,默认22号端口
是一种安全通道协议
对通信数据进行了加密处理,用于远程管理

1.2 OpenSSH

服务名称: sshd
服务端主程序:/usr/sbin/sshd
服务端配置文件:/etc/ssh/sshd_config

服务监听选项
端口号、协议版本、监听lP地址
禁用反向解析

[root@localhost ~]# vi letclssh/sshd_config
......
Port 22                                          #端口号,最多65535         
ListenAddress 0.0.0.0                  #监听地址,默认允许所有可以访问,目标地址         
Protocol 2                                     #协议号
UseDNS no                                  #禁用重定向

1.3 用户登录控制

禁用root用户,空密码用户
限制登录验证时间,重试次数
AllowUsers,DenyUsers
AllowUsers不要与DenyUsers同时用 #白名单与黑名单

[root@localhost~]# vi /etc/ssh/sshd_config
LoginGraceTime 2m         #限制登录验证时间
PermitRootLogin no          #不允许root账户登录,默认yes
MaxAuthTries 6                 #最大密码重试次数
PermitEmptyPasswords no    #不允许空密码登录
......
AllowUsers jerry admin@61.23.24.25      #只允许jerry和admin以61.23.24.25地址登录
项目验证

1、服务器设置限制登录时间。不允许root用户登录

[root@server1 ~]# vi /etc/ssh/sshd_config
LoginGraceTime 2m    #限制登录验证时间
PermitRootLogin no      #不允许root用户登录     
MaxAuthTries 6           #最大密码重试次数
PermitEmptyPasswords no     #不允许空密码登录
[root@server1 ~]# systemctl restart shhd      #重启服务

设置以上,会出现,XShell断开,root用户无法登录,并且密码输入6次后报错
但root用户本地登录仍然可以
在这里插入图片描述

2、服务器设置只允许zhangsa从客户机20.0.0.11上远程登录
#第一个项目验证改的数据需全部还原,环境变化会使下面的项目验证失败

[root@server1 ~]# useradd zhangsa       #创建用户
[root@server1 ~]# passwd zhangsa
[root@server1 ~]# vi /etc/ssh/sshd_config
添加白名单:
AllowUsers zhangsa@20.0.0.11   #规定zhangsa只能在20.0.0.11客户机上远程登录
[root@server1 ~]# systemctl restart shhd      #重启服务

在客户机20.0.0.11上进行zhangsa的远程登录

[root@server2 ~]# ssh zhangsa@20.0.0.10
[zhangsa@server1 ~]$ whoami
[zhangsa@server1 ~]$ ifconfig

在这里插入图片描述
显示当前登录成功,现在的ip地址为20.0.0.11
在客户机20.0.0.12上进行zhangsa的登录,结果失败
在这里插入图片描述
3、服务器设置拒绝zhangsan在20.0.0.11客户机上进行远程登录

[root@server1 ~]# vi /etc/ssh/sshd_config
添加黑名单:
DenyUsers zhangsa@20.0.0.11   #拒绝zhangsa在20.0.0.11客户机上远程登录
[root@server1 ~]# systemctl restart shhd      #重启服务

在客户机20.0.0.11上进行zhangsa的远程登录

[root@server2 ~]# ssh zhangsa@20.0.0.10

登录失败,报错
在这里插入图片描述

1.4 登录验证方式

PKI—公钥基础设施
数据加密
发送方使用接收方的公钥加密数据
接收方使用自己的私钥解密数据
数据加密能保证所发送数据的机密性
在这里插入图片描述

数字签名
发送方:
对原始数据执行HASH算法得到摘要值
发送方用自己私钥加密摘要值
将加密的摘要值与原始数据发送给接收方
数字签名保证数据完整性,身份验证和不可否认
在这里插入图片描述

数字加密和数字签名的区别:
数字加密:是用接收者的公钥加密,接收者用自己的私钥解密.(接收者公钥加密,接收者私钥解密)
数字签名:用发送者的私钥加密,只有用发送者的公钥才能解密.(发送者私钥加密,发送者公钥解密)

登录验证方式:
密码验证:核对用户名,密码是否匹配
密钥对验证:核对客户的私钥,服务端公钥是否匹配

[root@server2 ~]# ssh-keygen -t rsa    #生成密钥
[root@server1 ~]# vi /etc/ssh/sshd_config
PasswordAuthentication yes      #密码验证
PubkeyAuthentication yes        #密钥对验证       密钥对及密钥对存放路径要开就两个都要开
AuthorizedKeysFile      .ssh/authorized_keys  
  #密钥对存放路径   .ssh为隐藏文件默认开启的 ,需先生成密钥路径里才有文件
[root@server1 ~]# systemctl restart sshd    #重启服务

二、使用SSH客户端程序

配置命令

2.1 ssh命令-----远程安全登录

格式:ssh user@host 端口选项:-p 22

2.2 scp命令-----远程安全复制 #分为上传和下载

格式1:scp user@host:file1 file2
格式2:scp file1 user@host:file2

2.3 sftp命令----安全FTP上下载

格式:sftp user@host

2.4 命令项目操作

1.远程安全登录
在服务器没有限定用户可登录时,在客户机上使用root用户可以访问服务器

[root@server2 ~]# ssh root@20.0.0.10
[root@server1 ~]# whoami
[root@server1 ~]# ifconfig
[root@server1 ~]# exit        #登出

在这里插入图片描述

也可在服务器上创建新用户,客户机登录

2.远程安全复制 #分为上传和下载
文件上传:在客户机(20.0.0.11)上创建一个文件,拷贝到服务器(20.0.0.10)上

[root@server2 ~]# echo "dcswww" > a.txt         #客户机创建a,txt文件
[root@server2 ~]# ls -lh
[root@server2 ~]# scp /root/a.txt root@20.0.0.10:/opt    
#拷贝本地文件a.txt到用户名root地址是20.0.0.10的opt目录下 

服务器/opt目录下可查看

文件下载:有两种方式,把服务器(20.0.0.10)上的文件传输到客户机(20.0.0.11)上

[root@server1 opt]# vi 11      #服务器创建文件
[root@server1 opt]# vi 22

2.1.在客户机上

[root@server2 ~]# scp root@20.0.0.10:/opt/11 /root 
#拷贝root用户地址20.0.0.10的opt目录下的11文件到本地

2.2.在服务器上

[root@server1 ~]# scp /opt/22 root@20.0.0.11:/root
#拷贝目录opt下的22文件到root用户地址20.0.0.11的本地

3.安全FTP上下载
sftp命令客户端的上传和下载(因为sftp服务也在使用22号端口,无须另外设置)
在客户机上:

[root@server2 ~]# sftp root@20.0.0.10   
#sftp+用户名@IP地址;登录上的位置是为用户名设备的家目录
[root@server1 ~]# cd /home/zjq   #登录成功后,进人zjq用户目录
[root@server1 zjq]# touch ky07    #在zjq用户下创建ky07文件
[root@server1 zjq]# bye   #登出
[root@server2 ~]# sftp zjq@20.0.0.10  #zjq用户登录
sftp> ls -lh   

在这里插入图片描述

三、构建密钥对验证的SSH体系

3.1 项目整体实现过程

在这里插入图片描述

3.2 项目解析

1.在客户机中创建密钥对
ssh-keygen命令
可用的加密算法: RSA,ECDSA或DSA

[zhangsan@localhost ~]$ ssh-keygen -t rsa       #生成密钥
Generating public/private ecdsa key pair.
Enter file in which to save the key (/home/zhangsan/ .ssh/id_ ecdsa):   #默认存储位置
Created directory /home/zhangsan/.ssh'.        # 三次直接回车,默认路径,不设置密码
Enter passphrase (empty for no passphrase):     #对密钥进行设置密码加密
Enter same passphrase again:                         #设置密钥短语,再次输入密码
Your identification has been saved in /home/zhangsan/.ssh/id_ ecdsa.   #私钥文件位置
Your public key has been saved in /home/zhangsan/ ssh/id_ ecdsa.pub.   #公钥文件位置

2.将公钥文件上传至服务器
任何方式均可(FTP、Email、 SCP、HTTP…)

[zhangsan@localhost ~]$ scp ~/.ssh/id_ ecdsa.pub root@172.16.16.22:/tmp
                  #拷贝公钥文件到root用户ip地址为172.16.16.22的tmp目录下

3.在服务器中导入公钥文本
将公钥文本添加至目标用户的公钥库
默认公钥库位置: ~/.ssh/authorized_keys

[root@localhost ~]# mkdir /home/lisi/.ssh/     #创建目录,用户lisi存在,没用-p创建
[root@localhost ~]# cat /tmp/id_ ecdsa.pub >> /home/lisi/.ssh/authorized_keys   
        #/tmp/目录下文件内容追加到/.ssh/authorized_keys目录文件下
[root@localhost ~]# tail -1 /home/lisil.ssh/authorized keys #查看文件内容最后一行       
ecdsa-sha2-nistp256                                   #密钥内容
AAAAE2VjZHNhL XNoYTltbmlzdHAyNTYAAAAlbmIzdHAyNTYAAABBBLJSnBhscY
BfnnHxSYAJEBD4sNkTLMF 7itcFGM33RdeXU89QNQkMnCrCJHzAIZURrzpXG6M
p62mz9gRXUnARk8s=zhangsan@localhost

4.客户端使用密钥对验证登录
验证用户:服务端的用户lisi
验证密码:客户端的用户zhangsan的私钥短语

[zhangsan@localhost ~]$ ssh lisi@172.16.16.22    #登录到lisi的家目录下
[lisi@localhost ~]$ whoami         
lisi

3.3 项目操作

一. 在客户机中创建密钥对
1.在客户机上创建用户zhangwe

[root@server1 ~]# useradd zhangwe
[root@server1 ~]# passwd zhangwe

2.生成密钥

[root@server1 ~]# su zhangwe       #切换到zhangsan用户
[zhangwe@server1 root]$ ssh-keygen -t rsa        #生成密钥
[zhangwe@server1 root]$ ls -lah   查看,权限不够
[zhangwe@server1 root]$ exit   #登出

在这里插入图片描述

3.添加到组内,提升权限

[root@server1 ~]# gpasswd -a zhangwe wheel      #讲zhangsan加入wheel组
[root@server1 ~]# su zhangwe
[zhangwe@server1 root]$ sudo /usr/bin/ls -lah       # sudo:提升权限
输入zhangsan密码

在这里插入图片描述

4.查看生成的密钥文件

[zhangwe@server1 root]$ cd /home/zhangwe     #进入zhangwe家目录
[zhangwe@server1 ~]$ ls -lah      
[zhangwe@server1 ~]$ cd .ssh
[zhangwe@server1 .ssh]$ ls -lh

在这里插入图片描述

二 .将公钥文件上传至服务器
在客户机上

[zhangwe@server1 .ssh]$ scp id_rsa.pub root@20.0.0.11:/tmp
   #拷贝公钥到root用户地址为20.0.0.11的tmp目录下

在服务器查看

[root@server2 ~]# cd /tmp/
[root@server2 tmp]# ls -lh

在这里插入图片描述

三.在服务器中导入公钥文本
把文件拷贝到用户lilong上
先创建用户lilong,目录
在服务器上

[root@server2 tmp]# useradd lilong             #创建用户
[root@server2 tmp]# mkdir /home/lilong/.ssh    #创建目录
[root@server2 tmp]# cat id_rsa.pub >> /home/lilong/.ssh/authorized_keys    #追加文件内容
[root@server2 tmp]# cat /home/lilong/.ssh/authorized_keys        #查看文件是否存在
[root@server2 tmp]# cd

四.客户端使用密钥对验证登录
客户机远程登录服务器

[zhangwe@server1 .ssh]$ ssh lilong@20.0.0.11
[lilong@server2 ~]$ whoami 
[lilong@server2 ~]$ ifconfig

在这里插入图片描述

完成项目

第2步和第3步可以采用另外一种快捷方法

ssh-copy-id -i 公钥文件 user@host

#自己生成的密钥文件拷贝到指定目标主机上的目标用户下的密钥库文件中
验证密码后,会将公钥自动添加到目标主机user宿主目录下的.ssh/authorized_ keys文件结尾
例:ssh-copy-id -i ~/.ssh/id_ rsa.pub lisi@172.16.16.22
接着第一步实验继续进行
服务器还原初始状态
在服务器上

[root@server2 ~]# useradd lilong     #创建用户lilong
[root@server2 ~]# passwd lilong

在客户机上

[zhangwe@server1 .ssh]$ ssh-copy-id -i /home/zhangwe/.ssh/id_rsa.pub lilong@20.0.0.11

在这里插入图片描述
显示已经将密钥添加进lilong的公钥库中

客户机验证登录

[zhangwe@server1 .ssh]$ ssh lilong@20.0.0.11
[lilong@server2 ~]$ whoami
[lilong@server2 ~]$ ifconfig

在这里插入图片描述

项目完成

四、免密登录

免密登录(无密码)
服务器生成密钥:
[root@server2 ~]# ssh-keygen -t rsa
上传至别的机器,一般是服务器生成密钥,传给客户机,这样服务器可以免密登录上客户机
[root@server2 ~]# ssh-copy-id root@20.0.0.10 #密钥传给客户机密钥库中,root用户可省略root@
服务器登录验证
[root@server2 ~]# ssh root@20.0.0.10 #也可直接ssh 20.0.0.10,因为是root用户
[root@server1 ~]# exit

免密登陆:代理(不安全)–这是有密码的情况下再多打ssh-agent bash,没有就不用了
服务器上打ssh-keygen -t rsa #生成密钥
服务器上打ssh-copy-id 20.0.0.10 #密钥传给客户机密钥库中
服务器上打ssh-agent bash
服务器上打ssh-add
输入密钥密码
代理成功!无密码直接登陆!
[root@server2 ~]# ssh root@20.0.0.10
[root@server1 ~]# exit

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值