代码编织梦想

本章概述

介绍ssh服务如何远程登录到服务,免密登录如何进行实现。非对称密钥的特点。

一、SSH 服务

1、什么是SSH?

是一种 安全通道协议 ,主要用来实现字符界面的远程登录、远程 复制的功能。SSH协议对通道双方的数据传输进行了 加密处理 ,其中包括用户登录时输入的用户口令,SSH为建立在应用层和传输层基础上的安全协议。

2、SSH(Secure Shell)协议

  • 是一种安全通道协议

  • 对通信数据进行了加密处理,用于远程管理

SSH 的优点:

SSH客户端<---------------->SSH服务端

数据传输的是加密的,可以防止信息泄露

数据传输是压缩的,可以提高传输速度。

SSH客户端: putty、xshell、CRT、MobaXterm、Finalshell

SSH服务器: Openssh

3、OpenSSH服务器配置文件

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

openSSH是实现SSH协议的开源软件项目,适用于各种UNIX、Linux操作系统。

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

执行“systemctl start sshd”命令即可启动sshd服务。默认端口使用的22端口。

  • ssh_confiog 和 sshd_config 都是ssh服务器的配置文件
  • 二者区别在于前者是针对客户端的配置文件,后者是针对服务端的配置文件。

ssh服务端主要包括两个服务功能,ssh远程连接和sftp服务

作用:SSHD服务使用SSH协议可以用来进行远程控制,或在计算机之间传输文件。相比较之前用Telnet方式来传输文件要安全很多,因为Telnet是是明文传输,SSH是加密传输。

二、ssh远程登录方式

ssh登录的方式有两种。

第一次登录服务器时,系统没有保存远程主机的信息,为了确认主机身份会提示用户是否继续连接,输入yes后登录,这时系统将远程服务器信息写入用户主目录下的:$HOME/.ssh/known_hosts 文件中,下次再进行登录时,因为保存有该主机信息就不会再提示了。

1、方法一

格式: ssh [ 远程主机用户名] @ [远程服务器主机名或IP地址] -p port

当Linux主机上远程连接另一台Linux主机时,如当前所登录的用户是root的话,当连接另一台主机时也是用root用户登录时,可以直接使用ssh IP 登录。端口默认即可,如果不是默认的情况下,需要使用-p 指定端口。

远程登录其它主机

在这里插入图片描述

登录之后再退出登录,在本地家目录会生成一个.sshd 的目录,里面有文件记录了登录的信息。

在这里插入图片描述

使用域名进行登录

在这里插入图片描述

在这里插入图片描述

再次查看.ssh 目录下的文件查看登录信息

在这里插入图片描述

2、方法二

格式: ssh -l [远程主机名用户] [远程服务器主机名或IP 地址] -p root

-l :指定登录名称

-p:指定登录端口(等服务的端口非默认时,需要使用-p指定端口进行登录)

使用的比较少,不进行演示。。。。

3、故障解决

在平时工作中,有时候需要SSH登陆到别的Linux主机上去,但有时候SSH登录会被禁止,并弹出如下类似提示:

warning: Permanently added '192.168.10.9’(ECDSA) to the list of known hosts. Authentication failed.

这时直接删除家目录下面的 .ssh 目录下面的文件,即可解决。

4、sshd服务支持的两种登录验证方式

密码验证

  • 对服务器中本地系统用户的登录名称、密码进行验证。这种方式使用最为简便,但从客户端角度来看,正在连接的服务器有可能被假冒;从服务器角度来看,当遭遇密码穷举(暴力破解)攻击时,防护能力比较弱。
  • 18位密码复杂性(大写、小写、字符、数字),修改端口为高位端口,可以提高安全性。

秘钥对验证

  • 要求提供相匹配的秘钥信息才能通过验证。通常先在客户端中创建一对秘钥文件(公钥、私钥),然后将公钥文件放到服务器中指定位置,远程登录时,系统将使用公钥、私钥进行加密/解密关联验证,

  • 大大增强了远侧还能够管理的安全性。该方式不易被假冒,且可以免交互登录,在shell中被广泛使用

注意!!!
当密码验证、秘钥验证都启用时,服务器将优先使用秘钥对验证。
对于安全性要求高的服务器,建立将密码验证方式禁用,只允许启用秘钥对验证方式。若没有特殊要求,则两种方式都可以启用。

配置文件中修改启用密码验证还是秘钥验证

配置文件:/etc/ssh/sshd_config

PasswordAuthentication yes                        #启用密码验证

PubkeyAuthentication yes                          #启用密钥对验证

AuthorizedKeysFile     .ssh/authorized_keys       #指定公钥库文件(ls -a可查看)

配置文件中其它的设置

LoginGraceTime 2m                #登录验证时间为2分钟(默认2分钟)
PermitRootLogin no               #禁止root用户登录
MaxAuthTries 6                   #最大重试次数为6次
PermitEmptyPasswords no          #禁止空密码登录
PrintLastLog yes                 #显示上次登入的信息!默认为 yes
AllowUsers                       #只允许或禁止某些用户登录

配置文件修改完之后,需要重启配置sshd服务

systemctl restart sshd               #重启sshd服务

三、构建秘钥对验证的SSH

公钥和私钥的关系

  • 在对称加密技术中,有两种秘钥,分为私钥和公钥,私钥是秘钥对创建人拥有,不可公布,公钥是创建者公布给他人的。
  • 公钥用来给数据加密,用公钥加密的数据只能使用私钥解。

构建秘钥对验证SSH的原理

  • 首先ssh通过加密算法在客户端产生秘钥对(公钥和私钥),公钥发送给服务端,自己保留私钥。
  • 如果要想连接带有公钥的SSH服务器,客户端SSH软件就会向SSH服务器发出请求,请求联机的用户密钥进行安全验证。
  • SSH服务器收到请求之后,便在被连接的用户的家目录下寻找事先放上去的对应用户的公用秘钥
  • 然后把它和连接的SSH客户端发送过来的公用秘钥进行比较,如果两个秘钥一致,SSH服务器就用公钥加密“质询”并把它发送给SSH客户端。

简单理解

生成密钥可以在客户端和服务端两边生成,但是我们需要将使用客户端登录到服务端,那么,客户端就一直需要的是私钥,服务端要存在公钥,所以不关密钥对在客户端还是服务端生成,客户端拿到的都会是私钥,服务端拿到的都是公钥。

通俗理解

公钥(public key)相当于一扇门,私钥(pribate key)相当于是开门的钥匙,当一台机器A需要登录到机器B的时候,就得拿着钥匙去开门,但是前提的是机器B必须要有门,所以需要给机器B装上门,那就是把机器A的公钥给到机器B。然后机器A使用私钥就可以打开机器B的公钥门。

1、scp复制

scp复制 :是secure copy (安全复制)的简写,用在Linux下进行远程拷贝的命令,而且scp传输时加密的。

应用场景

在系统误删环境配置文件且没有备份的时候,可以远程从其它主机上拷贝过来。

使用方法

本地文件复制到服务器
scp 1.txt root@20.0.0.56:/opt

复制服务器的目录到本地
scp root@20.0.0.56:/home/sky/ ./

本地目录复制到服务器
scp -r sky2/ root@20.0.0.6:/home

操作实例

将本主机的1.txt文件传输到20.0.0.56主机的/opt目录下

在这里插入图片描述

将其他主机目录拷贝到本地
在这里插入图片描述

2、sftp 安全性传输

sftp 是secure file transfer protocol(安全文件传送协议) 的缩写,可以为传输文件提供一种安全的网络加密方法。

sftp与ftp有着几乎一样的语法和功能,sftp 为ssh的其中一部分,sftp本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接和答复操作。所以使用sftp是非常安全的,但是,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低的多。对网络安全要求更高时,可以使用SFTP代替FTP。

从服务端下载文件到本地主机

在这里插入图片描述

从本地主机上传文件到服务端

在这里插入图片描述

3、配置密钥对实验

通过ssh-keygen工具为当前用户创建密钥对文件,可用的加密算法有“RAS”、“ECDSA”、“DSA”,通过-t 选项调用相应的算法。

3.1 在服务端创建密钥对

3.1.1 创建密钥对

创建密钥对

在这里插入图片描述

查看密钥对的位置

在这里插入图片描述

3.1.2 修改密钥对的配置文件

修改ssd_config配置文件没关闭,关闭密码验证,开启密钥验证

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3.1.3 发送私钥到客户端

将私钥发送到客户端(方法很多中,使用文件传输命令、scp都可以),下面演示命令方法

在这里插入图片描述

查看桌面上的私钥文件
在这里插入图片描述

3.1.4 使用xshell进行登录

新建一个会话窗口,设置连接
在这里插入图片描述

设置登录的用户

在这里插入图片描述

确定后自动弹出身份验证,需要进行验证

导入私钥文件

在这里插入图片描述

选择好密钥文件后,进行连接
在这里插入图片描述

登录成功

3.2 在客户端创建密钥

3.2.1 在客户端进行远程连接生成密钥对

选择登录的IP地址

在这里插入图片描述

选择密钥对连接

在这里插入图片描述

选择浏览生成密钥对

在这里插入图片描述

点击生成

在这里插入图片描述

设置密钥对的密码,这边不设置

在这里插入图片描述

完成生成密钥对

3.2.2 保存上传公钥

进入属性

在这里插入图片描述

将公钥保存到桌面

在这里插入图片描述

在桌面可以查看到公钥文件

在这里插入图片描述

3.2.3 公钥上传并修改配置文件

上传公钥文件

在这里插入图片描述

完成上传

在这里插入图片描述

修改配置文件

在这里插入图片描述

重启ssh服务

在这里插入图片描述

3.2.4 验证登录

选择新建的密钥对进行登录
在这里插入图片描述

登录成功

在这里插入图片描述

四、总结

ssh为远程登录服务器的服务

  • 优点是使用该登录,传输数据会先 压缩再加密 ,保证安全性

登录方式有两种,配置各种参数进行登录,最为长常用的是 ssh ip地址或主机名

scp可以跨主机传输文件。

sftp也可以远程登录,传输具有安全性,功能与ftp类似,但是没有独立的守护进程,它依赖于sshd服务,22端口,只有启用sshd服务才能使用sftp服务。

ssh生成密钥对

  • 可在客户端和服务端两边生成,
  • 但是最终 客户端 拿的必须是 私钥服务端 拿的是 公钥
  • 且在服务器中需要修改配置文件: /etc/ssh/sshd_config 内容,比如:开启密钥对验证,关闭密码验证,设置公钥路径。
  • 密钥对验证使用的是非对称密钥,优点是:可以免密登录,提高安全性。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_57515995/article/details/125363673

ssh远程登录另一台linux_renyule的博客-爱代码爱编程_ssh远程连接linux服务器

登录: 可以用ssh命令行方式登录。对方需要开启ssh服务 ssh [-l login_name] [-p port] [user@]hostname 例如, 不指定用户: ssh 192.168.0.1 使用r

ssh简介及两种远程登录的方法_jack ldz的博客-爱代码爱编程_ssh

目录 SSH的安全机制 SSH的安装 启动服务器的SSH服务 SSH两种级别的远程登录 SSH的高级应用 Secure Shell(SSH) 是由 IETF(The Internet Engineering Task Force) 制定的建立在应用层基础上的安全网络协议。它是专为远程登录会话(甚至可以用Windows远程登录Linux服务器进

linux下使用ssh进行远程登录主机及操作_wen-pan的博客-爱代码爱编程_linux ssh远程登录

今天重新复习了一遍SSH协议,在这里把ssh登录做个笔记。 首先SSH是什么?SSH(Secure SHell)是Linux、Unix、Mac及其他网络设备最常用的远程CLI管理协议,SSH使用秘钥对数据进行加密,保证了远程管理数据的安全性。 SSH2是现在广泛使用的ssh版本 SSH协议使用TCP协议,端口号为22 Openssh是ssh的一个开

Linux中ssh远程登录服务-爱代码爱编程

Linux中的ssh服务是一种远程连接服务,主要用于远程登录Linux,ssh全称为Secure Shell Protocol即安全外壳协议,ssh协议是加密的,其默认端口是22,ssh由客户端和服务端组成,客户端一般有Xshell、SecureCRT、Putty等软件,服务端是openSSH,SSH服务是一个守护进程,在Linux后台实时监听来自客户端的

linux系统配置ssh远程账号登录-爱代码爱编程

第一步 编辑文件sshd_config 命令及文件路径 [root@localhost ~]# vim /etc/ssh/sshd_config 需要修改的三个配置: 第一个 激活端口号22: 第二个 激活允许root登录的配置: 第三个 激活密码认证: 第二步 启动ssh服务 启动ssh服务: 备注:操作ssh服务

linux怎么开通远程登录,linux下如何开通ssh,允许远程登录?-爱代码爱编程

ssh是可以代替telnet的一种远程管理的方式.并且具有安全\快捷等优点的一种服务. 方法一:进入Xwindows, 在shell窗口执行setup命令,选择system service启动sshd服务. 方法二:在/etc/ssh/sshd_config 文件中,将permitRootLogin no|yes设置为允许root用户远程登录 /

linux服务器开启远程端口,Linux修改SSH远程登录端口-爱代码爱编程

1、修改SSH远程登录端口为1211 # vi/etc/ssh/sshd_config Port 1211 #把’#Port 22’修改为’Port 1211’; #AddressFamilyany #ListenAddress0.0.0.0 #ListenAddress:: # servicesshd restart #重启SSH服务;

Linux命令之远程连接ssh-爱代码爱编程

概述 ssh命令是openssh套件中的客户端连接工具,可以给予ssh加密协议实现安全的远程登录服务器,实现对服务器的远程管理。 在脚本中该命令有着重要重要,可用于在远程服务器中执行命令。 语法 ssh命令的基本语法如下:ssh [选项] [参数]。 常用选项如下: 选项说明-1强制使用ssh协议版本1-2强制使用ssh协议版本2-4强制使用I

linux搭建ssh远程登录服务器-爱代码爱编程

什么是ssh? SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。SSH 是较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展

kali上开启SSH远程登录服务-爱代码爱编程

0x00 先用命令进入到 cd /etc/ssh ssh目录下,用ls命令查看配置文件 0x01 用vim进行编辑文件 vim ssh_config 找到其中 # PasswordAuthentication no 去掉其注释,并将no改为yes,然后输入:wq进行保存 0x02 用命令vim sshd_config 进入修改配置文件

Linux服务器配置root用户ssh远程登录-爱代码爱编程

Linux服务器配置root用户ssh远程登录   开启root用户使用密码远程登录,使用xshell连接远程服务器。 1. 安装 openssh-server 查看是否安装 yum list installed | grep openssh-server 安装 yum install openssh-server 2. 设置root