在Linux中配置SSH免密登录,也就是配置SSH公钥认证,主要通过生成公钥/私钥对并将其添加到目标系统的 authorized_keys 文件来实现。这里是一些简单步骤:
1. 生成 SSH 密钥对(如果你还没有的话)
在你的源机器上,打开终端并运行下面这个命令。如果已经存在一对公/私密钥,则无需再次创建。
bash
sshkeygen t rsa b 2048
按提示选择存放路径及密码保护(可选)。推荐保持默认路径和文件名称`~/.ssh/id_rsa`以方便管理,并且如果不需要每次连接都输密码,那么你可以直接跳过设置密码的部分,直接使用回车跳过。
2. 将公钥复制到服务器的 `authorized_keys`
使用下面命令自动完成向远端机器的复制:
bash
sshcopyid 用户名@服务器地址
例如:
bash
sshcopyid user@example.com
这将要求你提供远程用户的密码一次,之后便完成了该用户密钥在那里的添加。如果未安装 sshcopyid 工具,可以通过下面的手段手动添加:
从客户端复制生成好的`.pub`格式文件到剪切板:
bash
cat ~/.ssh/id_rsa.pub | xclip selection clipboard
接着在服务端的用户文件夹下新建或追加内容到`.ssh` 目录下的 `authorized_keys` 文件:
1. 手动复制内容:
bash
cd ~
mkdir p .ssh
nano .ssh/authorized_keys
然后粘贴公钥(Ctrl+Shift+V)进入文件里。
2. 从客户端发送过去:
首先在服务端准备目录与权限:
bash
mkdir p ~/.ssh; chmod 700 ~/.ssh
touch ~/.ssh/authorized_keys; chmod 600 ~/.ssh/authorized_keys
再利用ssh命令将本地的密钥传输上去:
ssh T user@example.com
3. 使用 `cat` 和重定向符号:
在客户端,运行以下命令,用公钥覆盖目标服务器上的 authorized_keys:
bash
cat ~/.ssh/id_rsa.pub | ssh 用户名@服务器地址 "mkdir p .ssh && cat >> .ssh/authorized_keys"
例如:
bash
cat ~/.ssh/id_rsa.pub | ssh user@example.com "mkdir p ~/.ssh && cat >> ~/.ssh/authorized_keys"
注意:替换用户名、服务器地址和相应细节至实际信息。
完成后,你应该可以不用密码就能连接了。测试一下是否可以无需输入密码成功建立无密码登陆:
bash
ssh 用户名@服务器地址
这样配置之后每次登录服务器时就不会提示您输入密码。但请确保你的 SSH 配置没有开启密码验证(在服务器的 `/etc/ssh/sshd_config` 中查找并修改 `PasswordAuthentication yes/no`)。
以上就是在两个不同的 Linux 系统之间配置 SSH 的免密登录过程。希望这对你的问题有所帮助。
发表评论