在Linux中配置SSH免密登录,也就是配置SSH公钥认证,主要通过生成公钥/私钥对并将其添加到目标系统的 authorized_keys 文件来实现。这里是一些简单步骤:

1. 生成 SSH 密钥对(如果你还没有的话)

在你的源机器上,打开终端并运行下面这个命令。如果已经存在一对公/私密钥,则无需再次创建。

linux配置ssh免密登录  第1张

bash

sshkeygen t rsa b 2048

按提示选择存放路径及密码保护(可选)。推荐保持默认路径和文件名称`~/.ssh/id_rsa`以方便管理,并且如果不需要每次连接都输密码,那么你可以直接跳过设置密码的部分,直接使用回车跳过。

2. 将公钥复制到服务器的 `authorized_keys`

使用下面命令自动完成向远端机器的复制:

linux配置ssh免密登录  第2张

bash

sshcopyid 用户名@服务器地址

例如:

linux配置ssh免密登录  第3张

bash

sshcopyid user@example.com

这将要求你提供远程用户的密码一次,之后便完成了该用户密钥在那里的添加。如果未安装 sshcopyid 工具,可以通过下面的手段手动添加:

从客户端复制生成好的`.pub`格式文件到剪切板:

bash

cat ~/.ssh/id_rsa.pub | xclip selection clipboard

linux配置ssh免密登录  第4张

接着在服务端的用户文件夹下新建或追加内容到`.ssh` 目录下的 `authorized_keys` 文件:

1. 手动复制内容:

bash

linux配置ssh免密登录  第5张

cd ~

mkdir p .ssh

nano .ssh/authorized_keys

然后粘贴公钥(Ctrl+Shift+V)进入文件里。

linux配置ssh免密登录  第6张

2. 从客户端发送过去:

首先在服务端准备目录与权限:

bash

mkdir p ~/.ssh; chmod 700 ~/.ssh

touch ~/.ssh/authorized_keys; chmod 600 ~/.ssh/authorized_keys

再利用ssh命令将本地的密钥传输上去:

linux配置ssh免密登录  第7张

ssh T user@example.com

3. 使用 `cat` 和重定向符号:

linux配置ssh免密登录  第8张

在客户端,运行以下命令,用公钥覆盖目标服务器上的 authorized_keys:

bash

cat ~/.ssh/id_rsa.pub | ssh 用户名@服务器地址 "mkdir p .ssh && cat >> .ssh/authorized_keys"

linux配置ssh免密登录  第9张

例如:

bash

cat ~/.ssh/id_rsa.pub | ssh user@example.com "mkdir p ~/.ssh && cat >> ~/.ssh/authorized_keys"

linux配置ssh免密登录  第10张

注意:替换用户名、服务器地址和相应细节至实际信息。

完成后,你应该可以不用密码就能连接了。测试一下是否可以无需输入密码成功建立无密码登陆:

bash

linux配置ssh免密登录  第11张

ssh 用户名@服务器地址

这样配置之后每次登录服务器时就不会提示您输入密码。但请确保你的 SSH 配置没有开启密码验证(在服务器的 `/etc/ssh/sshd_config` 中查找并修改 `PasswordAuthentication yes/no`)。

以上就是在两个不同的 Linux 系统之间配置 SSH 的免密登录过程。希望这对你的问题有所帮助。