ssh远程管理

一、Openssh概述

Openssh是一种安全通道协议,用来实现字符界面的远程登录、远程复制、远程文本传输。

Openssh对通信双方的数据进行了加密。有两种方式:

  • 用户名和密码登录:比较常用
  • 密钥对认证方式:可以实现免密登录

ssh端口:22,工作在网络层、传输层

ssh特点:

  • 数据在传输过程中是加密的
  • 数据在传输过程中是压缩的

ssh分为服务端和客户端

服务端:Openssh

客户端:xshell,moba等远程连接工具

Linux中的应用名称:sshd

两个配置文件

ssh_config:针对客户端的配置文件

sshd_config:服务端的配置文件

ssh监听地址:可以理解为ssh对外提供服务的地址。

二、Openssh的功能

2.1 远程连接

ssh命令

远程连接:从客户机远程连接到目标主机,对目标主机进行操作。

ssh 目标主机用户名@目标主机IP地址	#格式

-pssh默认端口22,当服务端口被更改时,使用-p指定ssh访问的端口(注意大小写

ssh -p 10022 root@20.0.0.30

使用ssh服务从10022端口远程连接20.0.0.30主机root用户

2.2 远程复制

scp命令

远程复制:把目标主机的文件复制到主机。

远程复制文件:

scp root@20.0.0.30:/opt/test.txt /opt/new.txt

解释:把20.0.0.30主机的root用户的/opt/test.txt复制到本机的/opt目录下,命名为new.txt

远程复制目录:

scp -r root@20.0.0.30:/opt/test1/ /opt

-r :复制目录

解释:把20.0.0.30主机的root用户的目录/opt/test/复制到本机的/opt目录下

指定端口号复制:如果sshd服务端口号被修改了,比如从22改成10022

scp -rP 10022 root@20.0.0.30:/opt/test1 /opt/test2

-P :指定服务的端口号,10022:端口号(注意是大写P

-rP:连用必须r在前,P在后,否则报错

注意:使用非默认端口号需要关闭防火墙和安全机制,否则系统会禁止使用

解释:把20.0.0.30主机的root用户的目录/opt/test/复制到本机的/opt目录下,重命名为test2

2.3 远程文件传输

sftp:远程文件传输协议

sftp是加密的文件传输协议,传输效率低于ftp,安全性更高。语法与ftp一模一样。

下载:get;上传:put

sftp对目录操作-r,指定端口号-P注意是大写-P

三、密钥对认证(免密登录)

3.1 密钥和密钥对

密钥:密钥是一种参数,把明文转换成密文。转换成的密文是一种算法生成的参数。

密钥的形式分为两种:对称密钥和非对称密钥。ssh密钥属于非对称密钥。

ssh密钥的加密方式:常用的三种,可以指定

  • RSA
  • ECDSA
  • DSA

密钥对由两个相关联的密钥组成:公钥私钥

  1. 加密和解密:公钥用于加密数据,私钥用于解密数据。发送方使用接收方的公钥来加密消息,只有接收方持有的私钥才能解密该消息。这种方式确保了即使在不安全的通信渠道上,只有授权的接收方能够读取消息内容。
  2. 数字签名:私钥可用于生成数字签名,公钥用于验证数字签名。发送方使用私钥对消息进行签名,接收方使用发送方的公钥来验证签名。这确保了消息的完整性和真实性,接收方可以确定消息确实来自于发送方且未被篡改。
  3. 身份验证:通过证明持有与其身份相关联的私钥,个体可以验证其身份。例如,Web 服务器可以使用数字证书(包含公钥),以证明其身份。客户端可以使用服务器的公钥来验证其身份,确保其连接到了正确的服务器而不是中间人攻击者。
  4. 安全通信:密钥对可用于建立安全通信渠道,如 SSL/TLS 协议。客户端和服务器之间的通信可以通过使用密钥对来加密和解密数据,从而保护数据免受窃听和篡改。

总的来说,密钥对的作用是确保数据的保密性、完整性和真实性,以及建立安全的通信渠道。

3.2 免密登录

ecdsa加密为例

ssh-keygen -t ecdsa
  • ssh-keygen:生成密钥对文件
  • -t:选择加密方式
  • 在这里插入图片描述

/root/.ssh/下生成两个文件:私钥文件id_ecdsa,公钥文件 id_ecdsa.pub

cd /root/.ssh
ssh-copy-id -p 10022 -i id_ecdsa.pub root@20.0.0.20
#传递公钥文件到主机20.0.0.20的root用户的授权密钥列表,指定端口10022

ssh-copy-id :将本地计算机上的 SSH 公钥添加到远程计算机的授权密钥列表中

  • -i:指定要复制的公钥文件,默认情况下它会查找 ~/.ssh/id_rsa.pub~/.ssh/id_dsa.pub 文件。

  • -p:指定远程 SSH 端口,默认为 22。

  • -o:在复制公钥时传递给 ssh 命令的选项。这允许你传递额外的选项,比如 -o "ProxyCommand=..."

  • -f:复制公钥到远程主机的指定文件,默认是 ~/.ssh/authorized_keys

ssh-agent bash		#添加密钥缓存
ssh-add				#本机添加私钥到ssh-agent,实现免密登录
ssh root@20.0.0.10	#可以免密登录到已添加的私钥
ssh-agent -k		#会话结束后可以关闭ssh-agent

3.3 xshell免密登录

使用远程连接工具xshell通过密钥实现免密登录,根据上文知道需要把本地xshell生成的密钥添加到要登录主机的授权密钥列表中去。所以这里用xshell实现密钥免密登录的前提是,能够登录到要登录的主机进行配置。

配置流程:要通过密钥对实现免密登录主机test2@20.0.0.20/24

在xshell新建连接的界面选择设置

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

生成密钥对,继续下一步(图略)

在这里插入图片描述

在这里插入图片描述

这里完成后,下一步就是把公钥文件上传到目标主机并进行相应配置。

公钥上传到主机可用scp等远程复制、传输工具,上传后,复制公钥到默认的ssh密钥保存目录/root/.ssh,接下来进行配置:

cd /root/.ssh/
cat id_rsa_2048.pub >> authorized_keys
# 把公钥的内容输入到授权密钥列表中
[root@test2 .ssh]# chmod 600 authorized_keys 
# 对授权密钥列表授权 600

在这里插入图片描述

在这里插入图片描述

至此登陆成功,实现xshell通过密钥实现免密登录。

相关推荐

  1. SSH远程管理

    2024-06-06 22:54:08       8 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-06 22:54:08       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-06 22:54:08       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-06 22:54:08       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-06 22:54:08       18 阅读

热门阅读

  1. 华为防火墙基础配置

    2024-06-06 22:54:08       10 阅读
  2. 整理好了!2024年最常见 20 道 Kafka面试题(九)

    2024-06-06 22:54:08       12 阅读
  3. git随记

    git随记

    2024-06-06 22:54:08      7 阅读
  4. C++位运算

    2024-06-06 22:54:08       9 阅读
  5. springboot 解耦、隔离、异步的原则以及实战

    2024-06-06 22:54:08       9 阅读
  6. 图论第三天

    2024-06-06 22:54:08       6 阅读
  7. 这几个大模型产品,你觉得哪个好

    2024-06-06 22:54:08       9 阅读
  8. 神经网络---网络模型的保存、加载

    2024-06-06 22:54:08       9 阅读
  9. 汽车线束搭铁与接地设计原则

    2024-06-06 22:54:08       8 阅读
  10. 双亲委派模型

    2024-06-06 22:54:08       6 阅读
  11. C++构造器设计模式

    2024-06-06 22:54:08       8 阅读