在Linux中使用ssh密钥对进行安全连接

天空之翼 2023-04-26 ⋅ 64 阅读

SSH(Secure Shell)是一种加密的网络协议,用于在不安全的网络上安全地进行远程登录和传输文件。使用用户名和密码进行SSH登录比较方便,但存在安全风险。为了增加安全性,可以使用SSH密钥对进行认证。

什么是SSH密钥对?

SSH密钥对由一对密钥组成,包括私钥和公钥。私钥应该保持机密,而公钥可以在远程服务器上进行配置。

当使用SSH密钥对进行连接时,首先客户端将公钥发送给服务器。服务器上配置的公钥与客户端发送的公钥进行比较,如果匹配,则认证成功。这种方式避免了明文传输密码的风险,并提供了更高的安全性。

生成SSH密钥对

在Linux中,可以使用ssh-keygen命令生成SSH密钥对。首先打开终端窗口,并输入以下命令:

ssh-keygen -t rsa

该命令将生成一个2048位的RSA密钥对。按照提示,可以选择密钥对的保存路径和设置一个密码(可选)。生成的私钥和公钥会保存在指定路径中(默认保存在~/.ssh目录下)。

配置远程服务器

将本地生成的公钥复制到远程服务器上,以完成配置。可以使用以下命令将公钥复制到服务器上:

ssh-copy-id username@remote_host

其中,username是服务器上的用户名,remote_host是服务器的IP地址或域名。

在成功复制公钥后,可以关闭终端窗口,并打开另一个窗口测试SSH连接。

连接服务器

在终端窗口中,使用以下命令连接服务器:

ssh username@remote_host

系统将提示您输入私钥的密码,输入正确密码后即可成功连接到远程服务器。

高级用法

非标准端口

如果远程服务器使用了非标准SSH端口(默认端口为22),可以使用以下命令连接服务器:

ssh -p port_number username@remote_host

其中,port_number是服务器的SSH端口号。

重命名私钥

如果需要使用非默认名称的私钥文件,可以使用以下命令连接服务器:

ssh -i private_key_file username@remote_host

其中,private_key_file是私钥文件的路径和文件名。

禁用密码登录

为了增加安全性,可以禁用密码登录,并仅允许使用SSH密钥对进行认证。对于远程服务器的配置更改,可以通过修改/etc/ssh/sshd_config文件来实现。找到并修改以下行:

PasswordAuthentication yes

yes修改为no,保存文件并重新启动SSH服务。

总结

使用SSH密钥对进行连接可以提供更高的安全性,因为它避免了明文传输密码的风险。通过生成SSH密钥对,将公钥配置到远程服务器上,并使用私钥进行认证,可以实现更安全的远程连接。在使用SSH密钥对时,还可以根据需要进行高级配置,如使用非标准端口或重命名私钥文件。


全部评论: 0

    我有话说: