SSH工作原理&Ubuntu20.04安装并配置SSH&设置SSH免密登录

本文详细介绍SSH的工作原理,包括客户端和服务端的安装配置方法,以及如何通过口令和密钥进行安全验证。此外,还介绍了SSH配置文件的各项设置,帮助读者掌握SSH的高级用法。

目录

一、SSH的介绍(服务器端,客户端)

1、SSH(远程连接工具)连接原理:

2、SSH的安全机制

3、两种级别的验证方法(登录方法)

二、ssh的安装与启动

1、安装

2、启动服务器的SSH服务

三、SSH客户端

1、前置知识

2、口令登录

1)、登录命令

2)、验证过程

3)、登录失败:1、服务器变更 + 2、服务器IP变化

4)、配置文件(一般不需要配置服务器端)

5)可选的配置选项

四、服务器端(Ubuntu)

1.前置知识

2.配置文件

3.密钥

4.可选命令

5.可用配置项

参考文献:


一、SSH的介绍(服务器端,客户端)

1、SSH(远程连接工具)连接原理:

        ssh服务是一个守护进程(demon),系统后台监听客户端的连接,ssh服务端的进程名为sshd,负责实时监听客户端的请求(IP 22端口),包括公共秘钥等交换等信息。

        ssh服务由2部分组成: openssh(提供ssh服务)    openssl(提供加密的程序);如果你只是想登陆别的机器的SSH只需要安装openssh-client(ubuntu有默认安装,如果没有则sudoapt-get install openssh-client),如果要使本机开放SSH服务就需要安装openssh-server。

Ubuntu/win10(powershell)缺省已经安装了ssh client。

        ssh的客户端可以用 XSHELL,Securecrt, Mobaxterm等工具进行连接

2、SSH的安全机制

SSH之所以能够保证安全,原因在于它采用了公钥加密。

整个过程是这样的:(1)远程主机收到用户的登录请求,把自己的公钥发给用户。(2)用户使用这个公钥,将登录密码加密后,发送回来。(3)远程主机用自己的私钥,解密登录密码,如果密码正确,就同意用户登录。

这个过程本身是安全的,但是实施的时候存在一个风险:如果有人截获了登录请求,然后冒充远程主机,将伪造的公钥发给用户,那么用户很难辨别真伪。因为不像https协议,SSH协议的公钥是没有证书中心(CA)公证的,也就是说,都是自己签发的。

可以设想,如果攻击者插在用户与远程主机之间(比如在公共的wifi区域),用伪造的公钥,获取用户的登录密码。再用这个密码登录远程主机,那么SSH的安全机制就荡然无存了。这种风险就是著名的"中间人攻击"(Man-in-the-middle attack)。

SSH协议是如何应对的呢?

3、两种级别的验证方法(登录方法)

        但并不是说SSH就是绝对安全的,因为它本身提供两种级别的验证方法:

        第一种级别(基于口令的安全验证):只要你知道自己帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但是不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到“中间人攻击”这种方式的攻击。

        第二种级别(基于密钥的安全验证):你必须为自己创建一对密钥,并把公钥放在需要访问的服务器上。如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密钥进行安全验证。服务器收到请求之后,先在该服务器上你的主目录下寻找你的公钥,然后把它和你发送过来的公钥进行比较。如果两个密钥一致,服务器就用公钥加密“质询”(challenge)并把它发送给客户端软件。客户端软件收到“质询”之后就可以用你的私钥在本地解密再把它发送给服务器完成登录。与第一种级别相比,第二种级别不仅加密所有传输的数据,也不需要在网络上传送口令,因此安全性更高,可以有效防止中间人攻击。

二、ssh的安装与启动

1、安装

        SSH分为客户端 openssh-client 和服务器 openssh-server,可以利用以下命令确认电脑上是否安装了客户端和服务器。

dpkg -l | grep ssh

        如果只是想远程登陆别的机器只需要安装客户端(Ubuntu默认安装了客户端),如果要开放本机的SSH服务就需要安装服务器。

sudo apt update        #更新数据
sudo apt upgrade        #更新软件
sudo apt install openssh-server  #下载安装ssh服务的服务器
sudo apt install openssh-client  #下载安装ssh服务的客户端

# 上面命令下载失败可以使用下面的命令尝试下载
sudo apt-get install openssh-client 
sudo apt-get install openssh-server 

这里给出的是ubuntu安装命令,其它系统请参考具体的安装命令

windows一般自带ssh客户端,如果没有可以参照以下官方文档教程进行安装
在这里插入图片描述

2、启动服务器的SSH服务

首先确认ssh-server是否已经启动了

ps -e | grep ssh


如图,sshd 表示ssh-server已经启动了。如果没有启动,可以使用如下命令启动:

sudo /etc/init.d/ssh start 


停止和重启ssh服务的命令如下:

sudo /etc/init.d/ssh stop  #server停止ssh服务 
sudo /etc/init.d/ssh restart  #server重启ssh服务


接下来就可以进行使用客户机远程登录服务器了~
 

三、SSH客户端

1、前置知识

位置:

ubuntu 系统的位置是/usr/bin/ssh。
Windows系统的位置是C:\Program Files\OpenSSH-Win64\ssh.exe

用法:

客户端ssh 最常见的用途就是登录服务器,这要求服务器安装并正在运行 SSH 服务器软件。

2、口令登录

1)、登录命令

口令登录非常简单,只需要一条命令,命令格式为: ssh 客户端用户名@服务器ip地址  eg:

ssh lee@IP(服务器的username和IP)

如果需要调用图形界面程序可以使用 -X 选项

ssh -X lee@192.168.52.144

如果客户机的用户名和服务器的用户名相同,登录时可以省略用户名。

ssh 192.168.52.1

还要说明的是,SSH服务的默认端口是22,也就是说,如果你不设置端口的话登录请求会自动送到远程主机的22端口。我们可以使用 -p 选项来修改端口号,比如连接到服务器的1234端口:

ssh -p 1234 lee@192.168.52.1

客户机必须要知道服务器的ip地址。可以在服务器端电脑上利用 ifconfig 命令查看该机的ip地址:

2)、验证过程

ssh 连接远程服务器后,首先有一个验证过程,验证远程服务器是否为陌生地址。如果是第一次登录远程主机,系统会给出下面提示:

上面这段文字告诉用户,这台服务器的指纹是陌生的,让用户选择是否要继续连接(输入 yes 或 no)。所谓“服务器指纹”,指的是 SSH 服务器公钥的哈希值。每台 SSH 服务器都有唯一一对密钥,用于跟客户端通信,其中公钥的哈希值就可以用来识别服务器。

下面的命令可以查看某个公钥的指纹。

ssh-keygen -l -f /etc/ssh/ssh_host_ecdsa_key.pub

上面的例子中,ssh-keygen -l -f命令会输出公钥/etc/ssh/ssh_host_ecdsa_key.pub的指纹。

        ssh 会将本机连接过的所有服务器公钥的指纹,都储存

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值