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)。支持算法有- SHA256、- MD5、- PIPEMD160
- -e将- OpenSSH转化为其他的密钥格式,默认导出格式为- RFC4716
- -F搜索制定的端口号在
- -f指定私钥文件的名称和路径。如果不指定,默认会生成- ~/.ssh/id_rsa(对于- RSA密钥)或相应的文件名
- -g打印指纹资源记录时使用通用- DNS格式 命令
- -I在对公钥进行签名时指定密钥标识
- -i将外部的密钥转化为- OpenSSH,默认导入格式为- RFC4716
- -K从- FIDO身份验证器下载常驻密钥。公钥和私钥 每个下载密钥的文件将写入当前目录。如果 附加了多个- 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静默构建
- -R从- known_hosts文件删除- hostname。此选项对于删除散列主机很有用
- -r打印指定公密钥文件命名的- SSHFP指纹资源记录
- -s使用指定的- CA密钥认证(签名)公钥
- -t指定要生成的密钥类型。常用的类型包括- rsa(默认)、- dsa、- ecdsa和- ed25519
- -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 可以将外部格式的密钥文件(如 PEM、PKCS#8 )转化为 OpenSSH 支持的私有密钥格式。它通常是解决不同系统之间的格式不兼容问题。
ssh-keygen -i [-m OpenSSH | PEM] [-f 文件地址]
到处密钥
与 -i 相反, -e 是将 OpenSSH 专用格式的私钥转换为其他格式(如 PEM、PKCS#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 次