【Linux】图文详解Xshell远程连接服务器:以Amazon EC2 VPS为例

文章目录

    • 问题描述
    • 解决方案
    • Q&A

问题描述

本地cmd或powershell使用ssh -i “your.pem” user_name@ip_address是可以登录Amazon EC2云服务器的。

然而,当使用XShell以SSH加载PEM文件方式登录亚马逊EC2云服务器,一直出现输入密码的问题,如下截图所示:
在这里插入图片描述

解决方案

参考该博客基本可以解决问题:https://blog.csdn.net/fly_leopard/article/details/132540483

基本原理:创建一个新的 SSH 密钥对,并将公钥添加到服务器的授权列表中,以便使用对应的私钥进行 SSH 登录。

cd ~/.ssh/
# 生成一对 ECDSA 密钥。生成密钥时不设置密码就直接回车。
ssh-keygen -t ecdsa -f my_aws_key
# 将公钥添加到服务器的授权密钥列表中,以实现密钥对认证。
cat my_aws_key.pub >> authorized_keys
# 复制私钥的内容,然后在本地保存为一个私钥文件。注意,私钥必须严格保密,不要泄露给任何人!!!
cat my_aws_key

Xshell添加刚刚保存的私钥文件

在这里插入图片描述
再新建一个连接
在这里插入图片描述

在这里插入图片描述
如果创建密钥对时输入了密码,也需要在以下截图中输入密码。

在这里插入图片描述

done.

Q&A

1.怎么理解该命令:ssh-keygen -t ecdsa

ssh-keygen -t ecdsa是一个在Unix或类Unix系统(如Linux)中生成SSH(Secure Shell)密钥对的命令。SSH是一个用于远程登录到服务器,执行命令和管理系统的协议。

这个命令的各个部分的意义如下:

  • ssh-keygen:这是一个生成SSH密钥对的程序。SSH密钥对包括一个公钥和一个私钥,你可以将公钥放在远程服务器上,然后用你的私钥来登录。
  • t:这是一个选项,用来指定生成的密钥类型。
  • ecdsa:这是一个密钥类型,表示使用椭圆曲线数字签名算法(Elliptic Curve Digital Signature Algorithm)。这种算法比RSA和DSA更安全,同时生成的密钥长度更短,所以更高效。

所以,ssh-keygen -t ecdsa命令的作用就是生成一个使用椭圆曲线数字签名算法的SSH密钥对。

2.如何生成指定文件名的公私钥,以及对应的pem文件

ssh-keygen命令后面加上-f选项和文件名来指定生成的公私钥的文件名。

# 生成名为mykey的私钥和名为mykey.pub的公钥
ssh-keygen -t ecdsa -f mykey

再使用openssl命令将生成的私钥转换为PEM格式。

# 将mykey转换为mykey.pem
openssl ec -in mykey -out mykey.pem

请注意,这些命令可能需要你输入密码来保护你的私钥。如果不希望输入密码,可以在ssh-keygen命令后面加上-N ""选项。例如:

ssh-keygen -t ecdsa -f mykey -N ""

3.ssh-keygen默认使用什么算法?

ssh-keygen的默认算法可能会根据你的系统或SSH版本不同而不同。然而,从OpenSSH 7.0开始,默认算法是ed25519ed25519是一种使用Edwards曲线的公钥签名算法,它提供了更好的安全性和效率。

你可以通过运行ssh-keygen命令而不带任何参数,然后查看生成的公钥文件(默认为~/.ssh/id_rsa.pub~/.ssh/id_ed25519.pub),来确定你的系统使用的默认算法。公钥文件的开头将会指示使用的算法,例如ssh-rsassh-ed25519

如果你想使用特定的算法,你可以使用-t选项,如ssh-keygen -t rsassh-keygen -t ecdsa

4.使用ssh-rsa算法生成的公私钥为什么在远程连接时还需要输入密码?

当你使用SSH公钥认证方式连接到远程服务器时,通常需要输入两种类型的密码:

  1. SSH密钥密码:当你创建SSH密钥对时,有选项为私钥设置密码。这是为了保护私钥不被未授权使用。每次使用这个私钥时(例如,使用SSH连接到远程服务器),你都需要输入这个密码。如果你在创建密钥对时没有设置密码,那么在使用这个私钥时就不需要输入密码。
  2. 远程用户密码:即使你使用SSH密钥认证,远程服务器可能仍然需要你输入远程用户的密码。这是因为SSH公钥认证和用户密码认证是两个独立的步骤。即使SSH公钥认证成功,你仍然需要知道远程用户的密码才能登录。然而,许多服务器会配置为只使用SSH公钥认证,这样就不需要输入用户密码。

如果你每次连接都需要输入私钥密码,你可以考虑使用ssh-agent程序来记住你的私钥和密码,这样你就不需要每次都输入密码了。只需谨慎使用,因为任何能访问ssh-agent的人都可以使用你的SSH密钥。

5.服务器怎么配置只使用SSH公钥认证?

要配置服务器只接受SSH公钥认证,需要修改SSH守护进程的配置文件,通常这个文件是/etc/ssh/sshd_config

以下是一些可能需要修改或确认的设置:

  1. PubkeyAuthentication yes:这个选项启用公钥认证。默认情况下,这个选项通常是开启的。
  2. PasswordAuthentication no:这个选项禁止密码认证。将这个选项设置为no可以确保只有持有有效公钥的用户才能登录。
  3. ChallengeResponseAuthentication no:这个选项禁止质询-响应认证。将这个选项设置为no可以防止其他认证方法。
  4. PermitRootLogin prohibit-passwordPermitRootLogin without-password:这个选项防止root用户使用密码登录。这个设置增加了系统的安全性,因为攻击者不能尝试猜测root密码。

修改完sshd_config文件后,你需要重新启动SSH守护进程以使修改生效。在大多数系统上,你可以使用以下命令来完成:

sudo service ssh restart

sudo systemctl restart sshd

note: 这些设置将禁止所有形式的密码认证,包括通过SSH的交互式密码认证。因此,在关闭密码认证之前,应该确保公钥已经添加到服务器的~/.ssh/authorized_keys文件中,否则可能会被锁在系统外面。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/779137.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Tomcat启动闪退是为什么?

Tomcat启动闪退是一种常见问题,它可能由多种原因引起。以下是一些常见的解决步骤方法: 检查内存分配: Tomcat启动失败可能是因为分配给它的Java虚拟机(JVM)内存不足。你需要检查并适当调整catalina.sh或catalina.bat启…

小狐狸JSON-RPC:wallet_addEthereumChain(添加指定链)

wallet_addethereumchain(添加网络) var res await window.ethereum.request({"method": "wallet_addEthereumChain","params": [{"chainId": "0x64", // 链 ID (必填)"…

THS-Location斜杠区别详解

1、location和proxy_pass都带/,则真实地址不带location匹配目录 location /api/ { proxy_pass http://127.0.0.1:8080/; } 访问地址:www.test.com/api/upload-->http://127.0.0.1:8080/upload 2、location不带/,proxy_pass带/&#xf…

前端-包管理器

文章目录 前端工程化包管理器NpmNpm常用命令 YarnYarn 常用命令 pnpmpnpm常用指令 依赖项npm 和 Yarn 的比较npm yarn pnpm 对比jsDelivr CDN 前端工程化包管理器 包管理器是一种工具,它帮助开发者管理项目中的库和依赖项,如安装、更新、配置和卸载。在…

JavaEE 初阶篇-深入了解多线程等待与多线程状态

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 线程等待 1.1 线程等待 - join() 方法 1.1.1 main 线程中等待多个线程 1.1.2 main 线程等待 t2 线程且t2 线程等待 t1 线程 1.1.3 其他线程阻塞等待 main 线程 1.…

Webpack常见插件和模式

目录 目录 目录认识 PluginCleanWebpackPluginHtmlWebpackPlugin自定义模版 DefinePlugin的介绍 ( 持续更新 )Mode 配置 认识 Plugin Loader是用于特定的模块类型进行转换; Plugin可以用于执行更加广泛的任务,比如打包优化、资源管理、环境变量注入等 …

基于ThinkPHP+Uniapp开发的房产管理系统

一款基于ThinkPHPUniapp开发的房产管理系统,支持小程序、H5、APP;包含房客、房东、经纪人三种身份。核心功能有:新盘销售、房屋租赁、地图找房、房源代理、在线签约、电子合同、客户CRM跟进、经纪人收益、分享佣金等 多终端 Uniapp开发&…

系统开发实训小组作业week5 —— 用例描述与分析

目录 4.3 UC003电影浏览与查询 4.3.1 用例描述 4.3.2 活动图 4.3.3 界面元素 4.3.4 功能 4.4 UC004在线订票 4.4.1 用例描述 4.4.2 活动图 4.4.3 界面元素 4.4.4 功能 4.3 UC003电影浏览与查询 4.3.1 用例描述 用例号 UC003-01 用例名称 电影浏览与查询 用例描述…

Spring Boot 统一数据返回格式 分析 和 处理

目录 实现统一数据格式 测试 原因分析 解决方案 🎥 个人主页:Dikz12📕格言:吾愚多不敏,而愿加学欢迎大家👍点赞✍评论⭐收藏 实现统一数据格式 统⼀的数据返回格式使⽤ ControllerAdvice 和 Response…

linux 常用命令整理

ps aux : 打印出所有进程 可以通过 man ps 查看ps的说明。 ps是最基本也是最强大的进程查看命令 aux都是参数 a show processes for all users 显示所有用户的进程 u display the processs user/owner 显示用户 x also show processes not attached to a term…

LeetCode 1248. 统计「优美子数组」

解题思路 这道题我们需要稍微转化一下思路&#xff0c;s[j]s[i-1]k,将s[j]的出现次数存储到数据中。 相关代码 class Solution {public int numberOfSubarrays(int[] nums, int k) {int a[] new int[nums.length1];for(int i1;i<nums.length;i) a[i]nums[i-1];//s[i]表示…

基于Python微博舆情数据爬虫可视化分析系统(NLP情感分析+爬虫+机器学习)

这里写目录标题 基于Python微博舆情数据爬虫可视化分析系统(NLP情感分析爬虫机器学习)一、项目概述二、微博热词统计析三、微博文章分析四、微博评论分析五、微博舆情分析六、项目展示七、结语 基于Python微博舆情数据爬虫可视化分析系统(NLP情感分析爬虫机器学习) 一、项目概…

【C++】vector模拟实现

个人主页 &#xff1a; zxctscl 如有转载请先通知 文章目录 1. 前言2. vector源码3. 构造、赋值和析构3.1 无参构造3.2 拷贝构造3.3 迭代器区间构造3.4 赋值3.5 析构 4. Capacity4.1 size4.2 capacity4.3 empty4.4 resize4.5 reserve 5. 下标访问和迭代器6. 输出7. Modifiers7.…

C# 操作 Word 全域查找且替换(含图片对象)

目录 关于全域查找且替换 Word应用样本 SqlServer数据表部分设计样本 范例运行环境 配置Office DCOM 设计实现 组件库引入 实现原理 查找且替换的核心代码 窗格内容 页眉内容 页脚内容 形状内容 小结 关于全域查找且替换 C#全域操作 Word 查找且替换主要包括如下…

平台不是问题,音乐集中播放:Listen 1

Listen 1&#xff1a;跨越平台&#xff0c;畅享音乐。让万千歌曲一键集中播放&#xff0c;让好音乐无界聆听。- 精选真开源&#xff0c;释放新价值。 概览 不论你日常倾向于哪一款在线音乐服务&#xff0c;无论是网X云音乐&#xff0c;QX音乐抑或是虾X音乐&#xff0c;恐怕最令…

【Java】ArrayList数组的扩容机制 jdk1.8

&#x1f4dd;个人主页&#xff1a;哈__ 期待您的关注 ArrayList和普通数组不同&#xff0c;ArrayList支持动态扩容&#xff0c;那么ArrayList到底是如何扩容的呢&#xff1f;你又是否知道ArrayList数组的初始长度是多少呢&#xff1f; 在开始介绍之前&#xff0c;我们要先介…

Qt常用容器之:QVector

参考原文&#xff1a;https://www.cnblogs.com/ybqjymy/p/17996789 在计算机编程的世界中&#xff0c;数据结构是一个核心概念&#xff0c;它为我们提供了有效地组织和存储数据的方法。在众多数据结构中&#xff0c;向量&#xff08;Vector&#xff09;作为一种动态数组&#…

HarmonyOS实战开发-使用List组件实现导航与内容联动的效果。

1 卡片介绍 使用ArkTS语言&#xff0c;实现一个导航与内容二级联动的效果。 2 标题 二级联动&#xff08;ArkTS&#xff09; 3 介绍 本篇Codelab是主要介绍了如何基于List组件实现一个导航和内容的二级联动效果。样例主要包含以下功能&#xff1a; 切换左侧导航&#xff…

鸿蒙OS开发实战:【打造自己的搜索入口】

背景 几乎每家应用中都带有搜索功能&#xff0c;关于这个功能的页面不是特别复杂&#xff0c;但如果要追究其背后的一系列逻辑&#xff0c;可能是整个应用中最复杂的一个功能。今天主要实践目标&#xff0c;会抛开复杂的逻辑&#xff0c;尝试纯粹实现一个“搜索主页”&#xf…

初识Node.js与内置模块

能够知道什么是 Node.js能够知道 Node.js 可以做什么能够说出 Node.js 中的 JavaScript 的组成部分能够使用 fs 模块读写操作文件能够使用 path 模块处理路径能够使用 http 模块写一个基本的 web 服务器 一.初识Node.js 1.浏览器中的 JavaScript 的组成部分 2.Node.js 简介 …