跳到主要内容

ssh

SSH 是制定于应用层基础上的安全网络协议,是加密的信息传输系统。

验证是否开启

使用 ssh-keygen 构建

配置 SSH

基本语法(文档地址

管理工具

使用 ssh-keygen 对密钥进行管理

ssh-keygen [子命令,通常为小写] [选项配置,通常为大写]
  • -A 生成所有默认密钥类型的主机
  • -a 保存私钥时,此选项指定 KDF 使用的次数,默认是 16 轮,防暴力破解
  • -B 显示指定私钥或公钥文件的气泡摘要
  • -b 指定密钥的位数。对于 RSA 密钥,常用的位数是 2048 或更高(如 4096)
  • -C 为生成的密钥添加一个注释,通常用于标识密钥的用途或所有者
  • -c 更新密钥的注释
  • -D 下载 PKCS#11 共享库提供的公密钥
  • -E 制定指纹的哈希算法(默认是 SHA256)。支持算法有 SHA256MD5PIPEMD160
  • -eOpenSSH 转化为其他的密钥格式,默认导出格式为 RFC4716
  • -F 搜索制定的端口号在
  • -f 指定私钥文件的名称和路径。如果不指定,默认会生成 ~/.ssh/id_rsa(对于 RSA 密钥)或相应的文件名
  • -g 打印指纹资源记录时使用通用 DNS 格式 命令
  • -I 在对公钥进行签名时指定密钥标识
  • -i 将外部的密钥转化为 OpenSSH,默认导入格式为 RFC4716
  • -KFIDO 身份验证器下载常驻密钥。公钥和私钥 每个下载密钥的文件将写入当前目录。如果 附加了多个 FIDO 身份验证器,密钥将从 第一个触摸的身份验证器
  • -k 生成 KRL 文件。在此模式下,将 在通过撤销每个密钥或证书的标志指定的位置生成 KRL 文件 显示在命令行上。要吊销的密钥/证书可能是 由公钥文件指定或使用 ssh-keygen-f
  • -L 打印一个或多个证书的内容
  • -l 显示密钥的指纹信息
  • -M 生成候选 Diffie-Hellman 组交换 (DH-GEX) 参数 最终由 diffie-hellman-group-exchange-* 键使用 交换方法
  • -m 允许控制私钥文件的存储格式,确保生成的密钥能被其他工具(如 OpenSSL、旧版 SSH 客户端等)正确读取。若不指定,默认格式由 ssh-keygen 版本决定
  • -N 为私钥设置一个密码。每次使用私钥时都需要输入这个密码,以增加安全性
  • -n 指定要包含在 证书。可以指定多个主体, 用逗号分隔。
  • -O 指定键/值选项。这些特定于已请求执行的动作
  • -P 旧密码的输入
  • -p 请求更改私钥文件的密码,而不是创建一个新的私钥
  • -Q 测试 KRL 中的密钥是否已被吊销。如果还指定了 -l 该选项,则 将打印 KRL
  • -q 静默构建
  • -Rknown_hosts 文件删除 hostname。此选项对于删除散列主机很有用
  • -r 打印指定公密钥文件命名的 SSHFP 指纹资源记录
  • -s 使用指定的 CA 密钥认证(签名)公钥
  • -t 指定要生成的密钥类型。常用的类型包括 rsa(默认)、dsaecdsaed25519
  • -U 此选项表示 CA 密钥驻留在
  • -u 更新 KRL
  • -V 在签署证书时指定有效间隔
  • -v 显示信息的信息
  • -w 指定创建 FIDO 时将使用的库的路径 authenticator-hosted keys,覆盖使用 USB HID 支持。
  • -Y find-principals 查找与签名的公钥关联的主体, 使用授权中的标志提供 使用标志提供的签名者文件。
  • -Y match-principals 查找与指定的授权签名者文件中的标志提供的主体名称匹配的主体 使用标志。如果一个或多个匹配 找到主体时,它们会在标准输出上返回
  • -Y check-novalidate 检查使用 keygen 结构。这不会验证签名是否来自授权的 -Y sign 签名。测试签名时,接受标准输入上的消息和使用 ssh-keygen -n 的签名命名空间。包含相应签名的文件 ssh-keygen 还必须使用标志提供。 签名测试成功通过返回零退出状态来表示
  • -Y sign 使用 SSH 密钥对文件或某些数据进行加密签名。签名时,接受零个或多个文件进行登录 命令行 - 如果未指定文件,则对标准上呈现的数据进行签名 输入。签名写入输入文件的路径,并使用 附加“.sig”,或者如果消息要 已从标准输入中读取
  • -Y verify 请求验证使用上述方式生成的签名
  • -y 从私钥生成新的公钥文件
  • -Z 指定在编写 OpenSSH 格式时用于加密的密码 私钥文件。可用密码列表可以使用以下命令获得 ssh -Q 密码。默认值为 aes256-ctr
  • -z 指定要嵌入到证书中的序列号以进行区分 来自同一 CA 的其他证书。如果 前缀为“+” 字符,则每个证书的序列号将递增 在单个命令行上签名。默认序列号为零

创建用法

使用 -t 构建新的 ssh 密钥

# 常规创建用法
ssh-keygen [-q] [-b bits] [-t dsa | ecdsa | ed25519 | rsa]
[-m OpenSSH | PEM] [-N 新密码] [-C 注释]
[-f 文件地址]

旧密码维护

使用 -p 对密码进更改

ssh-keygen -p [-P 旧密码] [-N 新密码]
[-m OpenSSH | PEM] [-f 文件地址]

倒入密钥

使用 -i 可以将外部格式的密钥文件(如 PEMPKCS#8 )转化为 OpenSSH 支持的私有密钥格式。它通常是解决不同系统之间的格式不兼容问题。

ssh-keygen -i [-m OpenSSH | PEM] [-f 文件地址]

到处密钥

-i 相反, -e 是将 OpenSSH 专用格式的私钥转换为其他格式(如 PEMPKCS#8

ssh-keygen -e [-m PKCS#8 | PEM] [-f 文件地址]

从私钥文件导出公钥

使用 -y 从私钥文件生成新的公钥文件

ssh-keygen -y [-f 文件路径]

修改注释

使用 -c 可以修改已有密钥的注释

ssh-keygen -c [-P 密钥(如果有的话)]  [-C 新的注释] [-f 文件地址]

显示密钥的信息

使用 -l 显示密钥的指纹信息

ssh-keygen -l [-v] [-E fingerprint_hash] [-f 文件地址]

默认端口

netsh advfirewall firewall add rule name=sshd dir=in action=allow protocol=TCP localport=22

开启服务

Start-Service sshd

关闭服务

Stop-Service sshd

远程连接

常规链接方法

ssh Administrator@119.45.35.232 -o 2222

如果在 ~/.ssh/ 下配置了 config 相关内容,可直接

防止断连

在本地 sshd_config 文件(在 /etc/ssh/ 下):

# linux、mac 在 /etc/ssh 下
# window 在
ClientAliveInterval 60 // 闲置 60s 后自动连接
ClientAliveCountMax 5 // 尝试 5 次