Mac 设置 SSH 免密连接到 CentOS7【避免坑】

本文详细介绍了一种简便的方法来实现SSH免密登录。通过在服务端和客户端进行特定配置,包括创建authorized_keys文件和使用ssh-keygen生成公钥与私钥对,最终实现了从客户端到服务端的无缝连接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近公司申请了一批服务器,每次用 ssh root@ip, 输密码特别麻烦,中午整了一下 SSH 免密登录。

第一步, 服务端配置 [被访问的设备]。

1. 通过ssh root@ip 命令先连接到服务器上。

2. 切换到 ~/.ssh/ 目录,没有的话,自行创建。

3. 创建 authorized_keys 文件。【后面有用】

 

第二步,客户端配置[本地PC]

1. 切换到 ~/.ssh/ 目录,同上2。

2. 执行 ssh-keygen -t rsa -f ~/.ssh/取个好记的名字(如:server1)。

3. 此时回生成 server1 和 server1.pub 两个文件。

4. 将 server1.pub 的内容拷贝到 authorized_keys 中。(另一种方式,可以通过 ssh-copy-id -i ~/.ssh/server1.pub host@ip)。

5. 配置 ~/.ssh/ 目录下面 config 文件。

Host server1
HostName server1 的IP
Port 22
User root
IdentityFile ~/.ssh/server1

6. 测试使用 ssh server1,可以连接到 server1 。

 

转载于:https://www.cnblogs.com/zacky31/p/9668876.html

<think>我们正在配置SSH登录,目标是从Windows机器(使用VSCode)登录到Linux服务器。 根据引用内容,我们可以总结出以下步骤: 1. 在Windows上生成SSH钥对(如果还没有的话)。 2. 将公钥复制到Linux服务器的~/.ssh/authorized_keys文件中。 3. 确保Linux服务器上SSH服务的配置允许公钥认证。 4. 测试登录。 注意:引用中提到了不同环境,我们以Windows 10自带的OpenSSH客户端为例。 下面详细步骤: 步骤1:在Windows上生成SSH钥对 - 打开PowerShell(管理员或非管理员都可以,但建议以管理员身份运行)。 - 运行命令: ssh-keygen -t rsa -b 4096 -C "your_email@example.com" 其中,注释可以替换为你的邮箱,或者任何标识。 - 按提示输入保存路径(默认是C:\Users\<你的用户名>\.ssh\id_rsa),直接回车使用默认。 - 设置钥的码(passphrase),如果不需要码,直接回车跳过。 步骤2:将公钥复制到Linux服务器 - 方法1:使用ssh-copy-id(Windows 10可能需要安装OpenSSH客户端,且1709版本后自带,但可能没有ssh-copy-id,所以推荐方法2) - 方法2:手动复制 a. 在Windows上,用记事本打开公钥文件(默认是C:\Users\<你的用户名>\.ssh\id_rsa.pub),复制内容。 b. 登录到Linux服务器,进入用户的家目录下的.ssh目录(如果不存在则创建): mkdir -p ~/.ssh chmod 700 ~/.ssh c. 将公钥内容追加到~/.ssh/authorized_keys文件中(如果文件不存在则创建): echo "复制的公钥内容" >> ~/.ssh/authorized_keys d. 修改authorized_keys文件的权限: chmod 600 ~/.ssh/authorized_keys 注意:如果Linux服务器上目标用户是root,那么公钥要放在/root/.ssh/authorized_keys;如果是普通用户,则放在/home/用户名/.ssh/authorized_keys。 步骤3:配置Linux服务器上的SSH服务(可选,一般默认开启公钥认证) - 编辑SSH服务配置文件(通常为/etc/ssh/sshd_config): sudo vi /etc/ssh/sshd_config - 确保以下配置: PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys - 重启SSH服务: sudo systemctl restart sshd 步骤4:测试登录 - 在Windows的PowerShell中,使用以下命令连接: ssh 用户名@服务器IP - 如果配置正确,应该不需要输入码就可以登录。 对于VSCode配置: - 安装Remote-SSH扩展。 - 在VSCode中,按F1,输入Remote-SSH: Connect to Host,然后选择Configure SSH Hosts,编辑配置文件(一般是C:\Users\<你的用户名>\.ssh\config)。 - 添加如下配置: Host 别名 HostName 服务器IP User 用户名 IdentityFile ~/.ssh/id_rsa # 私钥路径 - 保存后,在Remote-SSH中连接该别名。 注意事项: - 权限问题:在Linux服务器上,.ssh目录权限必须是700,authorized_keys文件权限必须是600,用户家目录不能是777权限(建议755)。 - 如果遇到问题,可以检查服务器上的日志:/var/log/auth.log(Ubuntu)或/var/log/secure(CentOS)。 引用说明: [^1] 提到了在VSCode下配置登录的步骤,包括生成钥、Linux安装ssh服务、配置公钥。 [^2] 提供了Windows配置登录的参考。 [^3] 详细说明了在Windows上生成钥的步骤。 [^4] 说明了将公钥复制到服务器的方法。 [^5] 提到了权限设置的重要性。 下面,我们将按照上述步骤详细说明。</think>### 配置 SSH 登录 Linux 服务器的完整指南 通过配置 SSH 登录,您可以从 Windows 或 Linux 客户端直接访问 Linux 服务器而无需输入码,提高工作效率。以下是详细步骤: --- #### **步骤 1:在客户端生成 SSH 钥对** 1. **Windows 系统 (PowerShell/CMD)** ```powershell ssh-keygen -t rsa -b 4096 ``` - 按回车接受默认保存路径 (`C:\Users\<用户名>\.ssh\id_rsa`) - 设置码(可选,直接回车跳过) 2. **Linux/Mac 系统** ```bash ssh-keygen -t rsa -b 4096 ``` - 钥默认保存在 `~/.ssh/id_rsa` > 生成的文件: > - `id_rsa`:私钥(需保) > - `id_rsa.pub`:公钥(需复制到服务器)[^3] --- #### **步骤 2:将公钥复制到 Linux 服务器** 1. **方法 1:使用 `ssh-copy-id`(推荐)** ```bash ssh-copy-id -i ~/.ssh/id_rsa.pub username@server_ip ``` - 首次需要输入服务器码 2. **方法 2:手动复制(适合所有系统)** ```bash # 登录服务器 ssh username@server_ip # 创建 .ssh 目录(若不存在) mkdir -p ~/.ssh chmod 700 ~/.ssh # 追加公钥到 authorized_keys echo "粘贴您的公钥内容" >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys ``` > 关键权限设置: > - `.ssh` 目录权限:`700` > - `authorized_keys` 文件权限:`600`[^5] --- #### **步骤 3:配置服务器 SSH 服务** 1. 编辑 SSH 配置文件: ```bash sudo vi /etc/ssh/sshd_config ``` 2. 确保以下配置生效: ```ini PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys PasswordAuthentication no # 禁用码登录(可选) ``` 3. 重启 SSH 服务: ```bash sudo systemctl restart sshd ``` --- #### **步骤 4:测试登录** ```bash ssh username@server_ip ``` - 若配置成功,将直接进入服务器命令行 - 若失败,检查服务器日志: ```bash tail -f /var/log/auth.log # Ubuntu tail -f /var/log/secure # CentOS ``` --- #### **VSCode 配置登录** 1. 安装 **Remote - SSH** 扩展 2. 按 `F1` 输入 `Remote-SSH: Open Configuration File` 3. 添加服务器配置: ```ini Host MyServer HostName server_ip User username IdentityFile ~/.ssh/id_rsa # 私钥路径 ``` 4. 连接时选择 `MyServer`[^1][^4] --- ### 故障排除 | 问题现象 | 解决方案 | |---------|----------| | `Permission denied (publickey)` | 检查服务器 `.ssh` 目录权限(必须是 `700`) | | 仍要求输入码 | 在 `sshd_config` 添加 `LogLevel DEBUG` 查看详细日志 | | 无法创建 `.ssh` 目录 | 使用 `sudo mkdir` 并修改所有者:`sudo chown -R user:user .ssh`[^5] | > **安全提示**: > - 生产环境建议保留 `PasswordAuthentication no` 增强安全性 > - 定期轮换钥(重新生成并替换公钥)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值