OPENSSH服务器(ssh-keygen的使用方法)

本文详细介绍OpenSSH的原理和配置方法,包括基于RSA或DSA密钥对的免密码登录流程,以及如何通过密钥交换实现安全的远程连接。同时,文章还提供了具体的安装和配置步骤,帮助读者在Linux环境下实现安全、便捷的SSH远程登录。

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

一·相关概念

1. OPENSSH概念
OpenSSH是SSH(Secure Shell) 协议的免费开源实现。SSH协议族可以用来进行远程控制, 或在计算机之间传送文件。而实现此功能的传统方式,如telnet、 rcp ftp、 rlogin、rsh都是极为不安全的,并且会使用明文传送密码。OpenSSH提供了服务端后台程序和客户端工具,用来加密远程控制和文件传输过程中的据由此来代替原来的类似服务。

2. OPENSSH工作原理
服务器端开启SSH服务,在端口22监听客户端请求;
客户端发出请求,如果是第一次与服务器建立连接,服务器端会向客户端发送一个rsa key;
客户端接收到服务器端发送过来的rsa key后,就会采用与服务器端协商好的加密算法,生成会话密钥(此会话密钥用于加密客户端与服务器端之间的会话),并用rsa key加密会话密钥,并发送给服务器端;
服务器端就用对应的私钥解密已加密的会话密钥,然后用此会话密钥加密确认信息,发送给客户端。客户端用会话密钥解密加密的确认信息,到此,密钥交换成功和服务器认证成功。

3. OPENSSH协议
SSH是一种协议标准,其目的是实现安全远程登录以及其它安全网络服务
SSH1协议:由单个协议提供密钥交换、身份认证与加密的功能
SSH2协议:
传输层协议(主要提供密钥交换与服务器端认证功能)
认证协议 (主要提供密钥交换与服务器端认证功能)
连接协议 (主要提供远程执行命令功能)

4. OPENSSH端口
TCP 22

5. OPENSSH常用客户端工具
SecureCRT
Xshell
Xmanager
MobaXterm

6. DROPBEAR
Dropbear是一个相对较小的SSH服务器和客户端。是另一款ssh协议的开源实现类似SSH,实现完整的SSH客户端和服务器版本2协议。但它不支持SSH版本1,以节省空间和资源,并避免在SSH版本1的固有的安全漏洞。支持scp

二 .OPENSSH服务安装配置

(一)概述

1、为了让两个linux机器之间使用ssh免密码,采用了数字签名RSA或者DSA来完成这个操作。

2、模型分析

假设 A (192.168.11.142)为客户机,B(192.168.11.143)为目标机;

要达到的目的:
A机器ssh登录B机器无需输入密码

(二)具体操作流程

1、登录A机器
2、ssh-keygen ,将会生成密钥文件和私钥文件 id_rsa,id_rsa.pub
3、将 .pub 文件复制到B机器的 .ssh 目录, 并 cat id_dsa.pub >> ~/.ssh/authorized_keys
4、大功告成,从A机器登录B机器的目标账户,不再需要密码了;

1.关闭防火墙&Selinux
systemctl stop firewalld
setenforce 0

2.安装OPENSSH服务器及客户端
yum install openssh-server -y (服务端)
yum install openssh-clients -y (客户端)

3.OPENSSH服务器、客户端的配置文件
/etc/ssh/sshd_config #服务端配置文件
/etc/ssh/ssh_config #客户端配置文件

4.OPENSSH基于密钥的认证 #限于客户机是管理员

客户端(192.168.11.142):
ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 回车
Created directory ‘/root/.ssh’.
Enter passphrase (empty for no passphrase): 回车
Enter same passphrase again: 回车
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:45k2d8myM9cjh/Gty2p+gk5SdUqUsSy/ynfqpQWIx2E root@localhost.localdomain
The key’s randomart image is:
±–[RSA 2048]----+
| oo |
| o… |
| E = . |
| + B o |
| S = + |
| . * …+ |
| B +.==o. |
| . +=B=B .|
| .=O
O++ |
±—[SHA256]-----+
ls -a
.ssh
cd .ssh
ls
id_rsa id_rsa.pub
cat id_rsa.pub > authorized_keys #文件名必须为authorized_keys
scp authorized_keys 192.168.11.143:/home/liuyao/
The authenticity of host ‘192.168.11.143 (192.168.11.143)’ can’t be established.
ECDSA key fingerprint is SHA256:3uu+Zjhss20Lsp5s8RLdK4tmKwkfJurWGHNa5SC08qw.
ECDSA key fingerprint is MD5:7a:3e:52:d1:82:79:a8:f7:b3:5b:be:e8:2b:8a:48:98.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘192.168.11.143’ (ECDSA) to the list of known hosts.
root@192.168.11.143’s password:
authorized_keys 100% 408 349.8KB/s 00:00
目标机(192.168.11.143):
cd /home/liuyao/
ls
authorized_keys #会发现有这个文件
mkdir .ssh
mv authorized_keys .ssh/ #authorized_keys文件必须放到.ssh目录下
cd .ssh/
ls
authorized_keys
这时回到客户机(192.168.11.142):
ssh liuyao@192.168.11.143
[liuyao@localhost ~]$ #免密码登录到了目标机

5.OPENSSH基于口令的认证 #基于普通用户实现免密码登录

客户机操作:
useradd user1
passwd user1 #设置密码
su - user1
ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user1/.ssh/id_rsa):回车
Created directory ‘/home/user1/.ssh’.
Enter passphrase (empty for no passphrase): 回车
Enter same passphrase again: 回车
Your identification has been saved in /home/user1/.ssh/id_rsa.
Your public key has been saved in /home/user1/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:7WlqvS+scDTeLA/j6s2Aflv/xov+3NPydH4vfGz0NWw user1@localhost.localdomain
The key’s randomart image is:
±–[RSA 2048]----+
| |
| |
| |
| . |
| S . . |
| . o = . Eo|
| . o Bo*. …+|
| . .O.O+oo.=oO|
| .o++oB
…B*|
±—[SHA256]-----+
ssh-copy-id user2@192.168.11.143
/bin/ssh-copy-id: INFO: Source of key(s) to be installed: “/home/user1/.ssh/id_rsa.pub”
The authenticity of host ‘192.168.11.143 (192.168.11.143)’ can’t be established.
ECDSA key fingerprint is SHA256:mGgEV4do2moDpLIwzcBUGDDfLfOyu6pAuEMPY3unHJI.
ECDSA key fingerprint is MD5:1b:68:37:09:dd:03:bb:fc:f4:bb:be:ac:53:af:5c:11.
Are you sure you want to continue connecting (yes/no)? yes
/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed – if you are prompted now it is to install the new keys
user2@192.168.11.143’s password:
Number of key(s) added: 1
Now try logging into the machine, with: “ssh ‘user2@192.168.11.143’”
and check to make sure that only the key(s) you wanted were added.
目标机操作:
useradd user2
passwd user2
再回到客户端user1:
ssh user2@192.168.11.145 #免密码登录成功
Last login: Thu Dec 6 20:30:33 2018

`

<think>好的,我需要帮助用户在Windows系统上使用ssh-keygen生成SSH密钥。首先,我得回忆一下相关的步骤,并确保信息准确。根据用户提供的引用内容,ssh-keygen命令可以用不同的算法生成密钥,比如RSA、DSA、ECDSA、Ed25519等,并且需要指定密钥大小。例如,ssh-keygen -t rsa -b 4096会生成RSA-4096的密钥对。 接下来,我需要考虑用户在Windows环境下可能使用的工具。通常,Windows 10及以后的版本内置了OpenSSH客户端,所以用户可以直接在PowerShell或命令提示符中使用ssh-keygen。如果用户使用的是旧版Windows,可能需要安装Git Bash或者Windows Subsystem for Linux(WSL)来获得ssh-keygen工具。 然后,步骤大致如下: 1. 打开命令行工具(PowerShell或CMD)。 2. 输入生成密钥的命令,比如ssh-keygen -t rsa -b 4096。 3. 指定保存密钥的文件路径,默认是用户目录下的.ssh文件夹。 4. 设置密钥的密码(可选)。 5. 生成完成后,公钥和私钥会保存在指定位置。 需要提醒用户将公钥(通常以.pub结尾)添加到需要连接的服务器或Git平台,而私钥要妥善保管,不要泄露。同时,不同平台可能推荐的算法不同,比如GitHub推荐使用Ed25519,用户可以根据需要选择合适的算法。 另外,引用中的示例提到了不同的命令,比如ssh-keygen -t ed25519,这可能比RSA更高效安全。需要指出这些选项,并建议用户优先使用更新的算法,如Ed25519,如果系统支持的话。 可能还需要说明如何检查是否已有现有的SSH密钥,避免覆盖。比如,先查看.ssh目录下是否有id_ed25519或id_rsa等文件。如果存在,用户可以选择跳过生成步骤,或者备份旧密钥。 最后,常见问题可能包括路径问题、权限设置(比如.ssh目录的权限应为700,私钥文件为600),以及如何将公钥添加到远程服务器的authorized_keys文件中。这些虽然不是用户直接的问题,但可以作为补充提示,帮助用户顺利使用生成的密钥。 总结一下,回答需要分步骤,明确命令行操作,解释参数的作用,给出不同算法的选择建议,并提醒注意事项。同时,根据用户提供的引用内容,正确引用来源,例如使用-t和-b参数的例子来自引用[1]。</think>在Windows系统中生成SSH密钥的步骤如下,支持多种加密算法(如RSA、Ed25519等): ### 步骤说明 1. **打开命令行工具** - 按 `Win + S` 搜索 `PowerShell` 或 `CMD`,以管理员权限打开。 2. **执行密钥生成命令** 根据需求选择算法(推荐优先使用Ed25519[^1]): ```bash # Ed25519(推荐,更高效安全) ssh-keygen -t ed25519 # RSA-4096(兼容性更广) ssh-keygen -t rsa -b 4096 # ECDSA-521 ssh-keygen -t ecdsa -b 521 ``` 3. **设置保存路径** - 默认路径为 `C:\Users\<用户名>\.ssh\`,直接按回车使用默认路径。 - 若需自定义路径,输入完整路径如 `D:\my_key`(生成文件为 `D:\my_key` 和 `D:\my_key.pub`)。 4. **设置密钥密码(可选)** - 可为密钥添加密码提升安全性,直接回车留空则不设置。 5. **生成完成** - 私钥保存在 `id_算法名`(如 `id_ed25519`),公钥在相同路径下以 `.pub` 结尾。 ### 验证与使用 - **查看生成的密钥**: ```bash cat ~/.ssh/id_ed25519.pub ``` - **将公钥添加到服务器/Git平台**: 复制 `.pub` 文件内容到目标平台的SSH密钥配置页面(如GitHub的 `Settings → SSH and GPG keys`)。 ### 注意事项 1. **算法选择建议** - Ed25519:性能优,安全性高,推荐优先使用[^1]。 - RSA-4096:兼容性强,适合旧系统。 2. **密钥权限** - 确保 `.ssh` 目录权限为 `700`,私钥文件权限为 `600`(可通过 `icacls` 命令设置)。 3. **避免覆盖现有密钥** - 若已存在同名文件,ssh-keygen会提示是否覆盖,需谨慎操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值