SSH(Secure Shell)是一种用于远程登录和安全数据传输的协议。通过SSH,您可以在不安全的网络上安全地连接到远程服务器,并进行加密的数据传输。SSH支持多种身份验证方式,其中之一是使用SSH密钥对进行免密码登录。以下是使用私钥登录SSH服务器的详细介绍:
-
生成SSH密钥对:
-
在本地计算机上打开终端或命令行。
-
使用以下命令生成SSH密钥对。这将创建一个RSA密钥对,包括一个私钥(id_rsa)和一个公钥(id_rsa.pub)。
ssh-keygen -t rsa
-
您将被提示选择密钥的存储位置和密码(可选)。按照提示进行操作即可生成SSH密钥对。
-
-
复制公钥到服务器:
-
使用以下命令将您的公钥(id_rsa.pub)复制到服务器上,替换
your_username
为您在服务器上的用户名,your_server_ip_or_hostname
为服务器的IP地址或主机名。ssh-copy-id -i id_rsa.pub your_username@your_server_ip_or_hostname
-
您将需要输入服务器的密码以完成此操作。
-
如果服务器不支持
ssh-copy-id
命令,您可以手动将公钥内容追加到服务器上的~/.ssh/authorized_keys
文件中。
要将公钥内容手动追加到服务器上的~/.ssh/authorized_keys
文件中,可以按照以下步骤进行操 作:-
在本地计算机上生成SSH密钥对(如果尚未生成):
ssh-keygen -t rsa
这将生成一个RSA密钥对,包括私钥(id_rsa)和公钥(id_rsa.pub)。
-
查看您的公钥:
您可以使用文本编辑器或终端命令来查看公钥文件内容。使用
cat
命令来查看公钥文件的内容:cat ~/.ssh/id_rsa.pub
将会显示公钥内容。
-
连接到服务器:
使用SSH连接到服务器,替换
your_username
和your_server_ip_or_hostname
为实际的用户名和服务器地址:ssh your_username@your_server_ip_or_hostname
您将需要输入服务器密码以进行连接。
-
创建
~/.ssh
目录(如果不存在):如果
~/.ssh
目录不存在,可以使用以下命令创建它:mkdir -p ~/.ssh
-
打开
authorized_keys
文件进行编辑:使用文本编辑器(如
nano
或vim
)打开~/.ssh/authorized_keys
文件:nano ~/.ssh/authorized_keys
-
在文本编辑器中,粘贴您本地计算机上生成的公钥内容(
id_rsa.pub
文件中的内容)。 -
保存并退出文本编辑器:
- 如果您使用
nano
编辑器,按Ctrl + O
保存文件,然后按Enter
。 - 然后按
Ctrl + X
退出编辑器。
- 如果您使用
-
设置文件权限:
为了确保安全性,您需要设置
~/.ssh
目录和authorized_keys
文件的权限。运行以下命令:chmod 700 ~/.sshchmod 600 ~/.ssh/authorized_keys
这将仅允许您的用户访问这些文件。
-
-
命令生成之后使用 ls 命令查看一下
id_rsa id_rsa.pub
-
密钥生成后会在当前目录下多出两个文件,id_rsa 和 id_rsa.pub,其中 id_rsa 是私钥(客户端使用),id_rsa.pub 这个是公钥(服务器使用)
现在,您已经手动将公钥内容追加到服务器上的
~/.ssh/authorized_keys
文件中,以允许使用私钥进行SSH免密码登录。
-
-
连接到SSH服务器:
- 现在,您可以客户端使用私钥进行SSH连接。在本地终端或命令行中,运行以下命令以连接到服务器:
ssh -i id_rsa your_username@your_server_ip_or_hostname
- 您将不再需要输入服务器密码,而是会自动使用私钥进行身份验证。
通过这些步骤,您已经实现了SSH服务器的免密码登录。请确保您妥善保管私钥文件,以确保安全性。这种方式不仅方便,还提高了服务器的安全性,因为私钥通常比密码更难被破解。