如何在 Eclipse 中通过 SSH 密钥登录远程服务器

如何在 Eclipse 中通过 SSH 密钥登录远程服务器,第1张

在 Eclipse 菜单中选:Help > Install New Software。窗口的顶部,你会看到一个下拉菜单,“work with”,单击并选择“ - All Available Sites - ”搜索"Remote System",点选安装 'Remote System Explorer End-User Runtime' 和 'Remote System Explorer User Actions'。
添加远程系统资源管理器的视图到您的 Eclipse 工作区。
转到菜单 Window > Open Perspective > Other。选择并添加 Remote System Explorer。
现在Eclipse工作区将出现一个新标签窗口。默认情况下你可以浏览和编辑本地硬盘驱动器上的文件。
设立一个新的conennection。在“远程系统”标签窗口点向下箭头,选择“新建连接”
在下一个屏幕上显示出所有连接类型。我要使用 SSH 连接。因此,选择“SSH Only”,点击“下一步”。
在下一个屏幕上,你将需要输入你的主机的地址。
现在你就有了一个新的连接出现在您的“远程系统”标签窗口,你会看到 'My Home' 和 'Root'。默认情况下只有这两个文件过滤器。
如果你想添加其他过滤器,您要右击“SFTP Files”然后选择“New”>“Filter”。
接下来,您将输入文件夹的位置,例如 /home/test。选择“下一步”,给过滤器命名,并单击“确定”。

密码登录顾名思义极其简单,登录之前需要在ssh服务器上有相应的用户名与登录密码

密码登录命令行:ssh username@hostname -p port
username:登录用户名
hostname:ssh服务器,既可以是ip也可以是域名
port:这个为可选项,即ssh服务器的端口,如果为空则默认端口为22

秘钥登录使用加密的

终端下生成秘钥命令:ssh-keygen -t rsa(如果不输入密码,则不需要密码)
生成过程中会提示输入秘钥文件的名称,如果输入为 Key,则会生成 Key 与 Keypub 两个文件, Key为私钥,Keypub为公钥。将Key放入本机用户目录的 ssh目录下,将ssh目录权限改为700

将生成的公钥 Keypub 上传至目标服务器,并将Keypub放置于用户目录的ssh目录,同样ssh目录权限也为700
然后执行 cat Keypub >> authorized_keys 将公钥导入,并确定authorized_keys权限为 600

秘钥配置好后,可以执行 ssh -i Key username@hostname -p port
ssh 默认秘钥为 id_rsa, 需要加上参数-i 指明秘钥

我们一般使用 PuTTY 等 SSH 客户端来远程管理 Linux 服务器。但是,一般的密码方式登录,容易有密码被暴力破解的问题。所以,一般我们会将 SSH 的端口设置为默认的 22 以外的端口,或者禁用 root 账户登录。其实,有一个更好的办法来保证安全,而且让你可以放心地用 root 账户从远程登录——那就是通过密钥方式登录。
密钥形式登录的原理是:利用密钥生成器制作一对密钥——一只公钥和一只私钥。将公钥添加到服务器的某个账户上,然后在客户端利用私钥即可完成认证并登录。这样一来,没有私钥,任何人都无法通过 SSH 暴力破解你的密码来远程登录到系统。此外,如果将公钥复制到其他账户甚至主机,利用私钥也可以登录。
下面来讲解如何在 Linux 服务器上制作密钥对,将公钥添加给账户,设置 SSH,最后通过客户端登录。
1 制作密钥对
首先在服务器上制作密钥对。首先用密码登录到你打算使用密钥登录的账户,然后执行以下命令:
[root@host ~]$ ssh-keygen <== 建立密钥对
Generating public/private rsa key pair
Enter file in which to save the key (/root/ssh/id_rsa): <== 按 Enter
Created directory '/root/ssh'
Enter passphrase (empty for no passphrase): <== 输入密钥锁码,或直接按 Enter 留空
Enter same passphrase again: <== 再输入一遍密钥锁码
Your identification has been saved in /root/ssh/id_rsa <== 私钥
Your public key has been saved in /root/ssh/id_rsapub <== 公钥
The key fingerprint is:
0f:d3:e7:1a:1c:bd:5c:03:f1:19:f1:22:df:9b:cc:08 root@host
密钥锁码在使用私钥时必须输入,这样就可以保护私钥不被盗用。当然,也可以留空,实现无密码登录。
现在,在 root 用户的家目录中生成了一个 ssh 的隐藏目录,内含两个密钥文件。id_rsa 为私钥,id_rsapub 为公钥。
2 在服务器上安装公钥
键入以下命令,在服务器上安装公钥:
[root@host ~]$ cd ssh
[root@host ssh]$ cat id_rsapub >> authorized_keys
如此便完成了公钥的安装。为了确保连接成功,请保证以下文件权限正确:
[root@host ssh]$ chmod 600 authorized_keys
[root@host ssh]$ chmod 700 ~/ssh
3 设置 SSH,打开密钥登录功能
编辑 /etc/ssh/sshd_config 文件,进行如下设置:
RSAAuthentication yes
PubkeyAuthentication yes
另外,请留意 root 用户能否通过 SSH 登录:
PermitRootLogin yes
当你完成全部设置,并以密钥方式登录成功后,再禁用密码登录:
PasswordAuthentication no
最后,重启 SSH 服务:
[root@host ssh]$ service sshd restart
4 将私钥下载到客户端,然后转换为 PuTTY 能使用的格式
使用 WinSCP、SFTP 等工具将私钥文件 id_rsa 下载到客户端机器上。然后打开 PuTTYGen,单击 Actions 中的 Load 按钮,载入你刚才下载到的私钥文件。如果你刚才设置了密钥锁码,这时则需要输入。
载入成功后,PuTTYGen 会显示密钥相关的信息。在 Key comment 中键入对密钥的说明信息,然后单击 Save private key 按钮即可将私钥文件存放为 PuTTY 能使用的格式。
今后,当你使用 PuTTY 登录时,可以在左侧的 Connection -> SSH -> Auth 中的 Private key file for authentication: 处选择你的私钥文件,然后即可登录了,过程中只需输入密钥锁码即可。

本文是笔者查阅网上资料做的总结,关于SSH原理,什么是对称加密和非对称加密,本文不过多介绍。这里介绍一下SHH的工作过程、配制方法,可能出现的问题及解决方法。
说明:本文中涉及的例子,SSH客户端为:本地主机A,SSH服务器为:服务器B

SSH协议采用C-S(客户端-服务器端)架构进行双方的身份验证以及数据的加密。
服务器端组件监听指定的端口,负责安全连接的建立、对连接方的身份认证、以及为通过身份认证的用户建立正确的环境。
客户端负责发起最初的TCP握手、安全连接的建立、验证服务器的身份与之前记录中的一致、并将自己的验证信息提供给服务器。
一个SSH会话的建立过程分为两个阶段。第一阶段,双方沟通并同意建立一个加密连接通道以供后续信息传输用。第二阶段,对请求接入的用户进行身份验证以确定服务器端是否要给该用户开放访问权限。

当客户端发起TCP连接时,服务器端返回信息说明自己支持的协议版本,如果客户端上支持的协议与之匹配,则连接继续。服务器会提供自己的公共主机密钥(public host key)以让客户端确认自己访问的是正确的机器。

然后,双方采用一种Diffie-Hellman算法共同为该会话建立密钥。每一方的一部分私有数据,加上来自对方的一部分公共数据,通过这种算法计算,能够得出完全相同的密钥用于本次会话。

整个会话的通讯内容都使用该密钥进行加密。这个阶段使用的公钥/私钥对与用户验证身份用的SSH密钥是完全无关的。

经典Diffie-Hellman算法的计算步骤如下:

这个共享密钥的加密方式被称为二进制数据包协议(binary packet protocol)。该过程能够让双方平等的参与密钥生成的过程,而不是由单方掌握。这种共享密钥生成的过程是安全的,双方没有交换过任何未经加密的信息。

生成的密钥是对称式密钥,一方用于加密信息的密钥等同于另一方用于解密信息的密钥,而任何第三方由于不持有该密钥,是无法解密双方传递的内容的。

会话加密通道建立后,SSH开始进入用户认证阶段。

下一步,服务器验证用户身份以决定是否准许其访问。验证有不同的方式,选择的验证方式取决于服务器的支持。

最简单的验证是密码验证:服务器要求客户端输入密码,客户端输入的密码经过上述的通道加密传输给服务器。

虽然密码是加密过的,然而该方法仍然不被推荐,因为用户经常为了省事而使用过于简单的密码,而这类密码很容易就能够被自动化脚本破解。

最流行的验证方式是SSH密钥对,这也是当前最推荐的方式。SSH密钥对是非对称密钥,私钥和公钥分别用于不同的功能。

公钥用于加密,而私钥用于解密。公钥可以随意上传、共享,因为公钥的流通并不会危及到私钥的保密性。

SSH密钥对的验证过程起始于上一部分加密通道建立之后,其具体执行步骤如下:

简单来说,服务器端用公钥加密信息,客户端用私钥解密信息以证明自己持有私钥。该过程同时使用了对称加密和非对称加密,两种方式各有自己的功用。

命令如下:

用户名:为要登录的服务器B中已存在的用户账户名
IP地址:为服务器B的IP地址
-p 端口号:用来指定端口号,默认为22

第一次登录时,会提示如下提示:

大概意思是说,你正在访问的主机不能验证它的真实性,它的RSA key(当前访问主机的公钥)指纹是怎样的,你确定要继续连接吗?
输入yes继续,会提示,已永久把当前访问主机的RSA key添加到了已知主机文件(用户目录下,ssh 文件夹中的knwon_hosts文件)中。之后再次 SSH 登录就不再有该提示了。
接着,输入登录账户的密码即可。

SSH 密码登录,需要服务器开启密码验证权限,编辑服务器SSH配置命令如下:

在 sshd_config 文件中,Protocol 2 下面 #PasswordAuthentication yes,将前面的#号去掉,保存退出。

公钥登录,即免密码登录。避免的每次登录都要输入的麻烦,也防止了中间人攻击。是SSH远程登录最常用的登录方式。

提示输入密钥对名称,直接回车,使用默认名称即可;
提示输入密码(使用私钥时,要输入密码),直接回车,不使用密码即可。

首先,登录服务器B,在进行下面的 *** 作。

找到 #PubkeyAuthentication yes,删除 #号,保存退出。

重启 ssh 服务

也可指定验证私钥:

本地主机A,生成密钥对后:

sudo vim /etc/selinux/config


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/13419421.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-01
下一篇 2023-08-01

发表评论

登录后才能评论

评论列表(0条)

保存