1. 首页 > 电脑手机 >

ssh协议详解_ssh协议的工作过程图

sshd配置文件的讲解

一、ssh详解

ssh协议详解_ssh协议的工作过程图ssh协议详解_ssh协议的工作过程图


1、什么是ssh

简单来说,ssh是一种网络协议,用于计算机之间的加密登录。

如果一个用户从本地计算机,使用ssh协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。

需要指出的是,ssh只有一种协议,存在多种实现,既有商业实现,也有开源实现。

2、基本用法

(1)、使用某个用户(例如user)登录远程主机host

命令:ssh user@host

(2)、如果本地用户名和远程用户名一致,则登录时可以省略用户名

命令:ssh host

(3)、ssh的默认端口是22,也就是说,你的登录请求会送进远程主机的22端口。使用-p参数,可以修改这个端口

命令:ssh –p 端口号 user@host

linux下安装SSH服务及使用详解

secure shell protocol简称SSH,是由IETF小组(network working group) 制定,在进行数据传输之前, SSH先对联级数据包通过加密技术进行加密处理,加密后在进行数据传输,确保了传递的数据安全.

SSH是 专门为远程登录会话和其他网络服务(例如:rsync,ansible)提供的安全性协议 ,利用SSH协议可以有效的防止远程管理过程中的信息泄露问题,绝大多数企业普遍采用SSH协议服务来代替传统的不安全的远程连接服务器软件(例如:Telnet/23端口/非加密的)等.

然后开始输入用户名

右击选中追踪流,在右侧再选中TCP流

即可显示数据包的全过程,圈中的部分是用户名,之所以每个单词重复出现,是因为数据有请求,有确认,所以会重复,去重以后就是用户名:shuai,密码:123456

在显示 yes/no 的时候,如果输入的 yes 就接收到了服务端发送过来的公钥信息,把这个信息放到了 /root/.ssh/known_hosts文件 里

SSH服务由服务端软件 OpenSSH(Openssl) 和客户端 常见的有SSH(linux),secureCRT,putty,Xshell 组成.SSH服务默认使用22端口提供服务, 他有两个不兼容的SSH协议版本,分别是1.x和2.x

如果在进行连接的时候出现以下情况,如何解决

基于口令的安全验证方式就是知道服务器的SSH连接账号和口令(也要知道对应服务器的IP地址及开放的SSH端口,默认为22端口)就可以通过SSH客户端登录到远程主机上面,此时联机过程中所有传输的数据都是加密的!

- 演示XSHELL及SSH客户端连接,口令验证测试

基于密钥的安全验证方式是指,需要依靠密钥,也就是必须事先建立一对密钥对,然后把 公用密钥(锁头:public key) 放在需要访问的目标服务器上,另外,还需要把 私有密钥(钥匙:private key) 放到SSH的客户端或对应的客户端服务器上.

此时,如果想要连接到这个带有公用密钥的SSH服务器上,客户端SSH软件或者客户端服务器就会向SSH服务器发出请求,请用联机的用户密钥进行安全验证,SSH服务器收到请求之后,会先在该SSH服务器上连接的用户的家目录下面寻找事先放上去的对应用户的公用密钥,然后把它和连接SSH客户端发送过来的公用密钥进行比较,如果两个密钥一直,SSH服务器就用公用密钥加密"质询(challenge)"并把它发送给SSH客户端!

SSH客户端收到"质询"之后就可以用自己的私钥解密,在把它发送给SSH服务器,使用这种方式,需要知道联机用户的密钥文件,与种基于口令验证的方式相比,第二种方式不需要在网络上传送口令密码,所以安全性更高了,这是我们也注意保护我们的密钥文件,特别是私钥文件,一旦被黑获取到,危险系数增大很多.

修改SSH服务的运行参数,是通过修改配置文件 /etc/ssh/sshd_config 来实现的.

一般来说SSH服务使用默认的配置已经能够很好的工作了,如果对安全要求不高,仅仅提供SSH服务的情况,可以不需要修改任何参数配置.

SSH服务监听参数说明

企业服务器被入侵案例

拉取:PULL

SSH详解-3.密钥登陆

SSH详解-1.ssh基础知识

SSH详解-2.ssh基本用法

SSH详解-3.密钥登陆

SSH详解-4.多个ssh公钥

在上一篇中我们了解到了ssh基本用法,ssh通过密码进行登录。密码登录存在很多问题。密码太简单,又不安全。密码太复杂,不容易记,而且每次登录都要输入很麻烦。于是就有了密钥登陆。

什么是密钥(key)?

ssh密钥登录采用的是 非对称加密 。

非对称密钥加密系统,又称公钥密钥加密。它需要使用不同的密钥来分别完成加密和解密作,一个公开发布,即公开密钥(public key)和,另一个由用户自己秘密保存,即私用密钥(private key)。

如果数据使用公钥加密,那么只有使用对应的私钥才能解密,其他密钥都不行;反过来,如果使用私钥加密(这个过程一般称为“签名”),也只有使用对应的公钥解密。

了解完密钥后,接下来看看密钥登录的过程,SSH 密钥登录分为以下的步骤。

第零步,准备步骤客户端通过 ssh-keygen 生成自己的公钥和私钥,并将公钥放入远程服务器的指定位置。

步,用户客户端向服务器发起SSH登录的请求。

第二步,服务器收到用户SSH登录的请求,服务器生成一些随机数据发送给客户端。

第三步,客户端接收到服务器发过来的数据,客户端使用私钥对数据进行签名后再返回给服务器。

第四步,服务器收到客户端加密后的数据,使用对应公钥进行解密。然后判断解密后的数据是否与原始数据一致,如果一致就允许用户登录。

ssh-keygen 是OpenSSH提供的一个命令行工具,用于生成密钥登录所需的公钥和私钥。

在上面的例子中,我使用了-t参数来指定加密算法,一遍会选择rsa或者dsa。

个问题,问我要保存在哪?(直接Enter默认会保存在~/.ssh/id_rsa中)因为我之前已经生成过密钥了,我就保存在tenxun里面。

第二个问题,询问是否要为私钥文件设定密码保护(passphrase)。这样的话,即使入侵者拿到私钥,还是需要破解密码。如果为了方便,不想设定密码保护,可以直接按回车键,密码就会为空。

,就会生成私钥和公钥,屏幕上还会给出公钥的指纹,以及当前的用户名和主机名作为注释,用来识别密钥的来源。

从上面的公钥中我们可以看到末尾的公钥注释 23696@DESKTOP-GKRBCVI

公钥注释可以用来识别不同的公钥,表示这是哪台主机(DESKTOP-GKRBCVI)的哪个用户(username)的公钥。

注意 ,公钥只有一行。因为它太长了,显示的时候可能自动换行了。

OpenSSH 规定,用户公钥保存在服务器的 ~/.ssh/authorized_keys 文件。你要以哪个用户的身份登录到服务器,密钥就必须保存在该用户主目录的~/.ssh/authorized_keys文件。只要把公钥添加到这个文件之中,就相当于公钥上传到服务器了。每个公钥占据一行。如果该文件不存在,可以手动创建。

-i 指定要上传公钥(公钥文件可以不指定路径和 .pub 后缀名),user是所要登录的用户名,hostname是主机名,这两个参数与ssh 登录命令是一致。

特别注意 ,不是把公钥上传上去就行了,还需要把 authorized_keys 文件的权限要设为644,即只有文件所有者才能写。如果权限设置不对,SSH服务器可能会拒绝读取该文件,导致密钥登录失效,登录的时候还需要输入密码。

提到输入密码,如果再生成公钥和私钥的时候设置了密码,使用密钥登录的时候也需要输入私钥的密码,这样可以防止他人非法窃取了私钥。

私钥设置了密码以后,每次使用都必须输入私钥密码,这个问题可以使用 ssh-agent 命令解决。

百度百科-密钥

Git - 生成 SSH 公钥 - OpenBSD manual pages

SSH详解-2.ssh基本用法

SSH详解-1.ssh基础知识

SSH详解-2.ssh基本用法

SSH详解-3.密钥登陆

SSH详解-4.多个ssh公钥

OpenSSH 的客户端是二进制程序 ssh,Linux 系统一般都自带 ssh。新版的win10开启ssh服务,但不是很好用,可以使用一些好用的软件 Xshell 、 Putty 等

安装OpenSSH 以后,可以使用 -V 参数输出版本号,查看一下是否安装成功。

ubuntu

windows

ssh常用的用途就是登录服务器,当然这需要服务器再运行着sshd。

ssh 登录服务器的命令如下,例如连接局域网内一台ip地址为192.168.1.98的主机

上面命令中,root是用户名,@后面的是主机名,它可以是域名,也可以是 IP 地址或局域网内部的主机名。

用户名也可以使用ssh的 -l 参数指定,这样的话,用户名和主机名就不用写在一起了。

ssh 默认连接服务器的22端口, -p 参数可以指定其他端口。

上面命令连接服务器192.168.1.98的8888端口,这里没有指定用户名。将使用客户端的当前用户名,作为远程服务器的登录用户名。

刚刚应该注意到这段话了,这段话是什么意思呢?

上面这段话的意思是192.168.1.98这个服务器的指纹是陌生的,是否要继续连接(输入 yes or no )。

接下来,输入 yes 后ssh会将当前服务器的指纹存储在本机 ~/.ssh/known_hosts 文件中。以后再连接的时候,就不会再出现警告了。

也就是说,ssh通过判断当前服务器公钥的指纹是否存在于~/.ssh/known_hosts文件中,来判断是否为陌生主机

然后,客户端就会跟服务器建立连接。

接着,ssh 要求用户输入所要登录账户的密码,用户输入密码验证成功后就可以使用远程shell了。

ssh(1) - OpenBSD manual pages

SSH详解-4.多个ssh公钥

SSH详解-1.ssh基础知识

SSH详解-2.ssh基本用法

SSH详解-3.密钥登陆

SSH详解-4.多个ssh公钥

前面说了利用密钥ssh可以快速登录,而不用每次都输入密码。

有时候在github和gitee中我们想用不同的密钥登录,或者某个服务器我们想使用另外一个公钥登录。这就情况下我们就需要配置多个公钥。

我们在生成私钥和公钥的默认的名称是 id_rsa 。前面已经详细说过密钥登录流程了,而密钥登录的时候会默认读取 id_rsa 密钥进行验证。因此,我们在使用多个密钥对的时候,必须告诉ssh哪个服务器验证用哪个密钥。

在一台电脑上生成多个公钥格式 ssh-keygen -t rsa -C 邮箱 公钥名 ,详细参数上一节已经说过了。

在 ~/.ssh/ 文件夹下面默认是没有config文件的,要配置多少个ssh公钥我们需要在该文件夹下新建一个 config 文件。

User 登录的用户名, IdentityFile 密钥文件路径, HostName 服务器ip地址或者域名。

Host 主机名,为什么把这个放到说呢?

需要注意一点配置完后应使用 ssh root@tenxun 来登录 ,也就是说@后面的是Host不是HostName。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至836084111@qq.com 举报,一经查实,本站将立刻删除。

联系我们

工作日:9:30-18:30,节假日休息