小小小幸运 发表于 2024-8-12 18:54:43

【Linux】图文详解Xshell长途毗连服务器:以Amazon EC2 VPS为例

题目形貌

本地cmd或powershell利用ssh -i “your.pem” user_name@ip_address是可以登录Amazon EC2云服务器的。
然而,当利用XShell以SSH加载PEM文件方式登录亚马逊EC2云服务器,一直出现输入密码的题目,如下截图所示:
https://i-blog.csdnimg.cn/blog_migrate/e64f8834c85e372522c7e7357ed391b3.png
解决方案

   参考该博客基本可以解决题目: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添加刚刚保存的私钥文件
https://i-blog.csdnimg.cn/blog_migrate/ccab309c76aa0f281c93054f66fdf7fb.png
再新建一个毗连
https://i-blog.csdnimg.cn/blog_migrate/8211adeb6319448904f1104963a6a073.png
https://i-blog.csdnimg.cn/blog_migrate/50dd5cef06eb51a8d9047ccb244ad36b.png
假如创建密钥对时输入了密码,也必要在以下截图中输入密码。
https://i-blog.csdnimg.cn/blog_migrate/a9f5a71d3e9b1af3333888080962f836.png
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开始,默认算法是ed25519。ed25519是一种利用Edwards曲线的公钥签名算法,它提供了更好的安全性和效率。
你可以通过运行ssh-keygen命令而不带任何参数,然后查看天生的公钥文件(默以为~/.ssh/id_rsa.pub或~/.ssh/id_ed25519.pub),来确定你的系统利用的默认算法。公钥文件的开头将会指示利用的算法,比方ssh-rsa或ssh-ed25519。
假如你想利用特定的算法,你可以利用-t选项,如ssh-keygen -t rsa或ssh-keygen -t ecdsa。
4.利用ssh-rsa算法天生的公私钥为什么在长途毗连时还必要输入密码?
当你利用SSH公钥认证方式毗连到长途服务器时,通常必要输入两种类型的密码:

[*]SSH密钥密码:当你创建SSH密钥对时,有选项为私钥设置密码。这是为了保护私钥不被未授权利用。每次利用这个私钥时(比方,利用SSH毗连到长途服务器),你都必要输入这个密码。假如你在创建密钥对时没有设置密码,那么在利用这个私钥时就不必要输入密码。
[*]长途用户密码:即使你利用SSH密钥认证,长途服务器可能仍然必要你输入长途用户的密码。这是由于SSH公钥认证和用户密码认证是两个独立的步骤。即使SSH公钥认证成功,你仍然必要知道长途用户的密码才能登录。然而,很多服务器会配置为只利用SSH公钥认证,这样就不必要输入用户密码。
假如你每次毗连都必要输入私钥密码,你可以思量利用ssh-agent步伐来记着你的私钥和密码,这样你就不必要每次都输入密码了。只需谨慎利用,由于任何能访问ssh-agent的人都可以利用你的SSH密钥。
5.服务器怎么配置只利用SSH公钥认证?
要配置服务器只接受SSH公钥认证,必要修改SSH守护进程的配置文件,通常这个文件是/etc/ssh/sshd_config。
以下是一些可能必要修改或确认的设置:

[*]PubkeyAuthentication yes:这个选项启用公钥认证。默认情况下,这个选项通常是开启的。
[*]PasswordAuthentication no:这个选项克制密码认证。将这个选项设置为no可以确保只有持有有效公钥的用户才能登录。
[*]ChallengeResponseAuthentication no:这个选项克制质询-相应认证。将这个选项设置为no可以防止其他认证方法。
[*]PermitRootLogin prohibit-password或PermitRootLogin without-password:这个选项防止root用户利用密码登录。这个设置增加了系统的安全性,由于攻击者不能实验猜测root密码。
修改完sshd_config文件后,你必要重新启动SSH守护进程以使修改收效。在大多数系统上,你可以利用以下命令来完成:
sudo service ssh restart

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

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 【Linux】图文详解Xshell长途毗连服务器:以Amazon EC2 VPS为例