ssh公钥密钥无密码登陆


SSH提供两种级别的安全验证。
第一种级别(基于密码的安全验证),知道帐号和密码,就可以登录到远程主机,并且所有传输的数据都会被加密。但是,可能会有别的服务器在冒充真正的服务器,无法避免被“中间人”攻击。
第二种级别(基于密钥的安全验证),需要依靠密钥,也就是你必须为自己创建一对密钥,并把公有密钥放在需要访问的服务器上。客户端软件会向服务器发出请求,请求用你的密钥进行安全验证。服务器收到请求之后,先在你在该服务器的用户根目录下寻找你的公有密钥,然后把它和你发送过来的公有密钥进行比较。如果两个密钥一致,服务器就用公有密钥加密“质询”(challenge)并把它发送给客户端软件。从而避免被“中间人”攻击。


基础环境:

机器A:192.168.1.107

机器B:192.168.1.108

SSH端口:32323

A机器用户:daiyu

B机器用户:daiyu


目标:

从A机器使用公钥密钥方式登陆B机器


(1)在A机器创建公钥密钥对,留意密钥对的存放路径

ssh-keygen -b 1024 -t rsa

-b bits     Number of bits in the key to create.
-t type     Specify type of key to create.



(2) 在B机器被登陆用户根目录下创建目录.ssh,并设置正确的权限

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


(3)将A机器的公钥拷贝至B机器被登陆用户的.ssh目录中

scp -P32323 ~/.ssh/id_rsa.pub daiyu@192.168.1.108:~/.ssh/


(4)调整B机器中的公钥,并设置正确的权限

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
rm ~/.ssh/id_rsa.pub
ls -l ~/.ssh/


(5)修改A机器的SSH配置

sudo vim /etc/ssh/sshd_config

PermitRootLogin no
RSAAuthentication yes
PubkeyAuthentication yes

(6)重启A机器的SSH服务

sudo service sshd restart


(7)测试从A机器登陆B机器

ssh -p32323 192.168.1.108

[daiyu@localhost ~]$ ssh -p32323 192.168.1.108
Last login: Mon Apr 17 11:46:01 2017 from 192.168.1.107
[daiyu@localhost ~]$

注:如果B机器的.ssh目录和公钥的权限设置不正确,会输出日志"bad ownership or modes for directory…"


原文出自:http://blog.youkuaiyun.com/daiyudong2020/article/details/70217611


End;


<think>好的,用户想了解如何生成和使用SSH公钥与私钥。我需要先回顾之前提供的引用内容,确保信息准确。首先,引用1提到ssh-keygen是生成密钥对的工具,用于SSH密钥认证,替代密码登录。引用2给出了具体的命令示例,使用rsa算法和4096位长度,并添加注释。引用3则涉及将公钥配置到Git平台如GitHub或GitLab的步骤。 接下来,我需要将这些信息整合成一个清晰的步骤指南。用户可能需要从生成密钥对开始,到配置公钥到服务器或Git平台,以及使用私钥进行认证。要注意区分不同操作系统的路径差异,比如Linux/macOS和Windows的区别。另外,权限设置也很重要,比如私钥的600权限,避免被他人访问。 可能还需要补充一些常见问题,例如密钥对的存放位置、是否需要密码保护、如何测试连接等。用户可能关心安全性问题,比如使用强加密算法(ed25519比rsa更推荐),以及处理多密钥对的情况。 确保按照用户的要求,行内公式和代码块正确使用$...$和```格式。同时,生成的相关问题要围绕SSH密钥的使用和管理,覆盖生成、配置、安全、多账户处理等方面,帮助用户进一步探索。</think>### 如何生成和使用SSH公钥与私钥 #### 一、生成SSH密钥1. **打开终端**(Linux/macOS)或 **PowerShell/CMD**(Windows) 2. **执行生成命令**: ```bash ssh-keygen -t ed25519 -C "your_email@example.com" ``` - `-t ed25519`:指定加密算法(推荐ed25519,比RSA更安全高效)[^2] - `-C "注释"`:添加标识信息(通常为邮箱) - 若系统不支持ed25519,改用`-t rsa -b 4096`生成RSA密钥[^2] 3. **选择保存路径**: ```bash Enter file in which to save the key (/home/user/.ssh/id_ed25519): ``` - 默认路径为`~/.ssh/`(Linux/macOS)或`C:\Users\用户\.ssh\`(Windows) - 可自定义路径(如多账户场景) 4. **设置密码保护**(可选): ```bash Enter passphrase (empty for no passphrase): ``` - 密码会增加安全性,但每次使用密钥需输入 #### 二、密钥文件说明 1. **私钥文件**: - 默认名称:`id_ed25519` - 权限要求:必须设置为`600`(仅用户可读写) ```bash chmod 600 ~/.ssh/id_ed25519 ``` 2. **公钥文件**: - 默认名称:`id_ed25519.pub` - 内容格式:`ssh-ed25519 AAAAB3NzaC1y... your_email@example.com` #### 三、配置公钥到目标服务器 1. **上传公钥SSH服务器**: ```bash ssh-copy-id -i ~/.ssh/id_ed25519.pub user@hostname ``` - 自动将公钥追加到服务器的`~/.ssh/authorized_keys`文件 2. **手动配置**(若无ssh-copy-id): - 复制公钥内容 - 登录服务器后执行: ```bash echo "公钥内容" >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys ``` #### 四、使用密钥认证 1. **SSH连接命令**: ```bash ssh -i ~/.ssh/id_ed25519 user@hostname ``` - 若使用默认密钥(`id_ed25519`),可省略`-i`参数 2. **Git配置示例**: - 将公钥添加到GitHub/GitLab: 1. 访问平台SSH设置页(如GitHub: Settings → SSH and GPG keys)[^3] 2. 粘贴`id_ed25519.pub`内容 - 测试连接: ```bash ssh -T git@github.com ``` #### 五、高级管理技巧 1. **多密钥对场景**: - 创建`~/.ssh/config`文件管理不同主机: ```bash Host github.com HostName github.com User git IdentityFile ~/.ssh/github_key ``` 2. **密码修改**: ```bash ssh-keygen -p -f ~/.ssh/id_ed25519 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值