SSH远程连接服务

一.SSH协议

SSH应用层协议

作用:远程连接设备,方便操作。

服务器的管理方式:

1.本地管理方式(物理服务器)

安装系统,故障修复

2.远程连接的方式

二.ssh协议的结构

1.服务端,sshd服务端程序

开启ssh服务

但凡启动一个软件都会有相应的进程存在,但凡适用于网络连接的服务都会有对应的端口。

如上图所示,这个sshd进程就是系统上的ssh服务,这个服务的主要作用就是提供网络连接的,

任何一个适用于网络连接的服务启动之后,在机器上都会有对应的端口,

ssh协议这是一个基于传输层TCP协议工作的一个服务,默认情况下会在机器上启动一个22的端口,

当机器上安装任何一个远程连接的客户端软件,使用这个软件去连接设备的时候,默认就是在连接这个设备上的22号端口。

如上图所示,sshd是ssh服务所产生的进程,而这个sshd服务是openssh-server的软件产生的。

而有些系统是不带有这个 openssh-server的软件的,需要我们自行在服务端安装,才可以使用客户端设备去连接服务端的22号端口。

2.客户端,ssh客户端程序

在windows上面安装客户端连接设备,可以使用XManager/Xshell。secure CRT,putty,

在Linux上面安装客户端连接设备,openssh-clients

如上图所示,可以在Linux操作系统上使用ssh命令就可以去连接其他的设备。

前提网能ping通,

服务器事先要启动着ssh服务,

centos操作系统安装完之后,ssh服务默认是开着的,

乌班图操作系统默认没有ssh服务,自己安装,

三.SSH客户端工具使用

1.远程连接服务器

ssh 用户名@服务器IP

如上图所示,是在Linux操作系统中启动openssh-clients软件,充当客户端远程控制软件,去远程连接其他服务端的22号端口。

2.远程执行命令

ssh 用户名@服务器IP 命令

如上图所示,是在Linux操作系统上启动客户端软件去远程连接其他的Linux服务端。

3.远程拷贝文件

scp 远程拷贝工具

scp 源文件 用户名@服务器IP:目录

两个方向都可以拷贝

如上图所示,可以在客户端启动远程控制软件,双向得拷贝文件,

如上图所示,可以使用scp -r命令拷贝目录。

4.rsync 远程拷贝工具

所有服务器均要安装rsync

这是一个增量拷贝工具,也就是说当使用这个工具多次拷贝数据的时候,只会拷贝变化的数据,没变的数据不会再拷贝。

a是保留文件权限,v是显示文件拷贝过程,

增量拷贝,在第二次拷贝数据的时候,只会拷贝变化的数据

如上图所示,可以使用rsync -av /opt/shell 来拷贝目录。这时这个结尾处少了一个/,代表的就是拷贝这个/opt/下的shell目录。

四.ssh服务的认证方式

也就是说当客户端连接服务器的时候,服务器怎么验证客户端的身份。

认证方式:

1.基于用户名,密码的认证(ssh服务的默认认证方式)

如上图所示,当你使用哪个用户远程连接服务器的时候,服务器的ssh服务会跟你要这个用户的密码。

2.基于密钥的认证(需要做额外的配置),之后的操作就不再需要用户密码了。也就是免密ssh

密钥对:公钥(锁)和私钥(唯一能打开这把锁的钥匙),存在唯一对应关系

a)在客户端生成密钥对

b)将公钥拷贝给服务器的ssh目录,服务器会将公钥信息保存到对应用户目录/.ssh/authorized_keys文件中。

如上图所示,大概是ssh服务基于密钥的认证方式流程,首先在客户端上生成密钥对,然后我们将客户端上的公钥拷贝给服务器的ssh目录,这时服务器上的ssh服务会自动将公钥中的密码提取出来保存到用户家目录中的.ssh目录中,这时系统会自动生成一个文件来保存密钥信息。下次客户端再次连接服务器的时候,会发送私钥信息和连接请求,服务器会自动拿公钥信息去验证私钥。

如果验证通过就不会再向客户端要密码了,

相比于公钥,私钥的信息更加重要。

案例:配置基于密钥的验证

1.在客户端上生成密钥对

如上图所示,是在Linux客户端使用ssh -keygen -t rsa这条命令去生成密钥对,

第一条询问信息在问将这个密钥对的私钥信息的存放位置,

第二条询问信息是在问给私钥文件加密的密码,

第三条信息是在让你再输入一遍密码

如上图所示,一个文件叫id_rsa这个文件保存私钥信息

一个文件叫id_rsa.pub这个文件保存公钥信息。

2.将公钥拷贝到服务端

第一种方式使用scp或者rsync将私钥信息拷贝到用户目录/.ssh/authorized_keys文件中。

第二种方式在Linux和Linux之间有一个便利,也是软件openssh客户端提供的一个命令,就是ssh-copy-id,这个命令,

如上图所示,这是IP为192.168.183.200这个机器将公钥信息拷贝给IP为192.168.183.10这个机器

如上图所示,这是IP为192.168.183.10这个机器,公钥信息保存文件的地址,

如上图所示,此时IP为192.168.183.200的机器在连接IP为192.168.183.10的机器就不再需要密码了。

如上图所示,此时IP为192.168.183.200的机器在远程连接IP为192.168.183.10的机器执行命令的时候就不再需要密码了。

如上图所示,这是再给我机器的martin用户设置密码的操作。

注意两点:

1.基于密钥的ssh是基于用户实现的。

2.基于密钥的ssh是单向的。

五.ssh服务的配置文件/etc/ssh/sshd_config

1.修改ssh服务的默认端口

如上图所示,我们需要将ssh服务的22号端口进行修改,机器端口号是1到65535这样一个取值范围,建议修改ssh服务的端口号为5位数。使用vim编辑器打开文件/etc/ssh/sshd_config的端口号为五位数端口号。

建议ssh服务的端口修改为大于1024的端口,小于1024的端口已经被分配给了其他的应用。

如上图所示,使用命令netstat -antp | grep ssh

来查看ssh服务的端口号。

centos操作系统安装成功以后,防火墙和SELinux都是默认开着的,这会阻止我服务的正常访问.

关闭防火墙

如上图所示,是关闭防火墙的正常命令,

关闭SELinux

如上图所示,是关闭SELinux的操作。

如上图所示,这是使用ssh服务去远程连接Linux虚拟机的操作,此时应该使用命令ssh 登录远程机器的用户@机器IP -p ssh服务的端口号

如上图所示,scp和rsync服务默认也是使用的22号端口来远程拷贝文件,所以也要使用-P选项来修改连接的端口。

2.禁止root用户登录

如上图所示,应该禁止使用root能够使用ssh服务远程连接机器,

在使用普通用户登录机器之后可以使用su - root来切换用户,

3.在远程连接的时候,服务器的ssh服务禁用密码认证,只能通过密钥认证,当然在禁用密码认证之前应该事先配置好密钥认证。

禁用密码认证,只能通过密钥认证,当然在禁用密码认证之前应该事先配置好密钥认证。

如上图所示,是在node-02这台机器上将公钥发送给node-01这台机器上的king用户

如上图所示,在node01这台机器上使用vim编辑器打开文件/etc/ssh/sshd_config,修改密码认证为no,即禁用密码认证,随后在配置好king用户的免密ssh远程连接以后,使用systemctl restart sshd来使得sshd服务重新读取配置文件/etc/ssh/sshd_config中的信息。

如上图所示,此时在node02这台机器上使用ssh 用户名@node01机器的IP -p 指定的ssh端口号

来在node02这台机器上远程连接node01这台机器上的king用户。

如上图所示,当禁用node01这台机器上的密码认证之后,即使在windows上使用xshell来远程连接node01的任何一个用户都连接不上,当然这是在没有配置ssh免密登录的前提下。

4.windows和Linux之间配置免密的ssh服务。

首先在客户端即windows上生成密钥对,

下一步将windows上的公钥保存为windows上的文件,随后将这个公钥文件拷贝到服务器上去,

如上图所示,此时将这个公钥文件拷贝到了服务器的king用户的家目录下,

如上图所示,此时使用ls命令可以查看这个公钥文件,

此时可以将这个公钥文件通过>>以追加的方式添加到用户家目录下的.ssh/authorized_keys中,

此时可以禁用服务器node01的密码认证功能,在windows使用ssh免密连接,登录node01机器的king用户,

5.影响ssh连接速度

ssh服务会将你写的主机IP地址翻译成这个IP地址所对应的主机名,

如上图所示,使用vim编辑器打开文件/etc/ssh/sshd_config禁用主机名解析,

如上图所示,可以使用kill -1 PID(服务的父进程)使得这个服务重新读取一下配置文件,

如上图所示,这是禁用ssh服务的主机名解析功能,并且使用kill -1 ssh进程的父进程使得修改的配置生效的操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值