如何在 Linux 中设置 SSH 无密码登录

SSH(Secure SHELL)是一种开源且可信的网络协议,用于登录远程服务器以执行命令和程序。

它还用于使用安全复制 (SCP) 命令和 rsync 命令通过网络将文件从一台计算机传输到另一台计算机。

本文中,我们将向您展示如何在基于 RHEL 的 Linux 发行版(例如 CentOS、Fedora、Rocky Linux 和 AlmaLinux)以及基于 Debian 的发行版(例如 Ubuntu 和 Mint)上设置无密码登录,使用 ssh 密钥连接到远程Linux服务器无需输入密码。

使用带有 SSH 密钥的无密码登录将增加两个 Linux 服务器之间的信任,以便轻松同步或传输文件。

我的设置环境

sh 复制代码
SSH Client : 192.168.0.12 ( Fedora 36 )
SSH Remote Host : 192.168.0.11 ( CentOS 8 )

如果您正在处理多个 Linux 远程服务器,那么 SSH 无密码登录是自动化任务的最佳方法之一,例如使用脚本自动备份、使用 SCP 命令同步文件以及远程命令执行。

在本例中,我们将设置 SSH 无密码自动登录,从服务器 192.168.0.12 以用户 howtoing 登录到 192.168.0.11 以用户 sheena 登录。

1. 创建身份验证 SSH-Keygen 密钥

首先使用用户howtoing登录服务器192.168.0.12,并使用以下命令生成一对公钥。

sh 复制代码
$ ssh-keygen -t rsa

2. 上传 SSH 密钥

从服务器 192.168.0.12 使用 SSH,并在服务器 192.168.0.11 的 sheena 的 .ssh 目录下上传新生成的公钥(id_rsa.pub),文件名为authorized_keys。

sh 复制代码
$ ssh-copy-id sheena@192.168.0.11

确保对远程服务器上的 ~/.ssh 目录和 ~/.ssh/authorized_keys 文件设置正确的权限。

sh 复制代码
$ ssh sheena@192.168.0.11 "chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys"

3. 禁用密码验证(可选)

为了提高安全性,您可以在远程服务器上禁用密码身份验证,仅允许 SSH 密钥身份验证。为此,请打开远程服务器上的 SSH 服务器配置文件:

sh 复制代码
$ sudo nano /etc/ssh/sshd_config
OR
$ sudo vi /etc/ssh/sshd_config

找到包含PasswordAuthentication 的行并将其设置为no。

sh 复制代码
PasswordAuthentication no

保存文件并重新启动 SSH 服务。

sh 复制代码
$ sudo systemctl restart sshd

4. 测试 SSH 无密码登录

从现在开始,您可以以 sheena 用户身份从服务器 192.168.0.12 以 howtoing 用户身份登录 192.168.0.11,无需密码。

sh 复制代码
$ ssh sheena@192.168.0.11

在本文中,您学习了如何使用 ssh 密钥设置 SSH 无密码登录。我希望这个过程很简单。如果您有任何疑问,请在下面的评论部分发表。

本文由mdnice多平台发布

相关推荐
火车叼位8 小时前
Windows 双网关自动切换:Node.js + 计划任务实现旁路由优先
网络协议·程序员
嵌入式小企鹅9 小时前
UiPath推出AI编程“总指挥台”,SiFive发布RISC-V第三代猛兽
人工智能·学习·google·程序员·ai编程·risc-v·开源工具
Java技术小馆16 小时前
零代码搭建家庭私有化健康中台
程序员
我要改名叫嘟嘟17 小时前
《微信读书》也出Skill啦~
程序员
亦暖筑序21 小时前
Vibe Coding 用久了,代码手感真的会退化——以及我怎么试图解决这个问题
程序员·开源·github
程序员cxuan2 天前
看了一下姚顺宇的访谈,确实太顶了。
人工智能·后端·程序员
人邮异步社区2 天前
OpenClaw如何部署?
程序员·大模型·ai智能体·openclaw
刀法如飞2 天前
Go 字符串查找的 20 种实现方式,用不同思路解决问题
算法·面试·程序员
KaneLogger3 天前
从装 Skill 到管理工作流:HK-Skills 的第二轮升级
程序员·aigc
魔术师Grace3 天前
小白也能上手:把 Codex 接到微信里
程序员·aigc