ssh-keygen(linux 命令) 创建 private key(私钥) , public key (公钥),实现ssh,scp,sftp命令无密码连接_sun0322的博客-CSDN博客
目录
■生成公钥 私钥 时,使用到的命令 ssh-keygen 的简单介绍
└40. RAS // ssh-keygen(linux 命令) // private key(私钥) , public key (公钥)
2.使用JDK创建证书 (并在 自己的 Web工程中 使用证书)
4.证明书安装(no trusted certificate found 时,需要用安装证明书的方式,来通过认证)
5.客户端证书 (和【 https 网站 的 CA证书】, 分别是 两个 证书。)
7.ssh,scp,sftp等命令无密码使用(通过公钥,私钥实现)
====
■相关知识 之 非对称加密
SSH密钥登录使用非对称加密,
用户通过自己的密钥登录,
(注意:私钥必须自己保存,不能泄漏,公钥则是公开,可以对外发送保存。)
公钥和私钥是一对一的关系:只有对应的私钥才能解密对应公钥加密的数据。
■想要达到的效果
ServerA 无密码 访问 ServerB
意义1:
(可无密码使用 ssh,scp等命令,
不用输入密码,当有连接服务器,文件传输等需求时,可以使用自动化脚本实现)
意义2:
不用担心ServerB的用户密码是否发生变更,是要你有私钥,ServerB配置了公钥,你就可以使用公钥访问ServerB中,配置了公钥的用户。
(注意,下面提到的./ssh 目录,是在用户目录下的./ssh目录。
比如配置在root下面, 那么,你就是以root用户登录的。)
■连接时 使用到的命令 (在ServerA上执行的命令)
ssh -i /root/.ssh/id_rsa_serverB user001@serverB
===
scp -i /root/.ssh/id_rsa_serverB /AAA/BBB/a.txt user001@serverB:/AAA/CCC/a.txt
===
sftp -i /root/.ssh/id_rsa_serverB user001@serverB << EOFmkdir CCCchmod 755 CCCmput a.txt /home/user001/CCC/a.txtchmod 644 /home/user001/CCC/a.txtbyeEOF
FTP相关命令(手机FTP服务启动应用)_sun0322的博客-CSDN博客
各种命令
・sftp
sftp -i /XXX/XXX/id_rsa user001@server001 <
配置好了的话,默认使用 -i 对应的私钥
// TODO
===
・ssh
ssh -i /XXX/XXX/id_dsa user001@server001
==
・scp
scp -i /XXX/XXX/id_dsa /XXX/FROM/*.csv user001@server001:/XXX/TO/
===
RSA 与 DSA
RSA 与 DSA 都是非对称加密算法。其中RSA的安全性是基于极其困难的大整数的分解(两个素数的乘积);DSA 的安全性是基于整数有限域离散对数难题。基本上可以认为相同密钥长度的 RSA 算法与 DSA 算法安全性相当。
■具体操作
1.首先 生成公钥 和 私钥
(在ServerA上) ssh-keygen -t rsa 命令生成了一个密钥(私钥)和一个公钥,
(而且密钥可以设置自己的密码,)
==
==
原理说明
可以把密钥 理解成一把钥匙, 公钥 理解成这把钥匙对应的锁头,
把锁头(公钥)放到想要控制的serverB上, 锁住serverB, 只有拥有钥匙(密钥)的人, 才能打开锁头, 进入serverB并控制,
而对于拥有这把钥匙的人, 必需得知道钥匙本身的密码,才能使用这把钥匙 (除非这把钥匙没设置密码), 这样就可以防止钥匙被人配了(私钥被人复制)
(其它serverC,使用ServerA的私钥,同样可以访问ServerB)
===
2.根据以上原理,配置公钥和私钥
在ServerB中,想登录的用户(user001)的 ./ssh 配置公钥authorized_keys
要控制的serverB的目录
在想登录的, 用户的目录下面
./ssh
└authorized_keys // 允许访问的Server的公钥信息,存放在这里 (比如,存放ServiceA的公钥信息)
└konw_hosts // serverB,访问过的其它的server的信息 (■补充说明1中解释)
3.连接
在ServerA中,使用私钥连接 ServerB
===■最后, 在本地用ssh命令的 -i 参数指定本地密钥, 并登录:ssh -i /root/.ssh/id_rsa_serverB user001@serverB(有多个私钥,或者私钥没有保存在 ./ssh下面时,需要指定私钥的位置)===
===
■补充说明1 :konw_hosts 文件
作用:
如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。
例:AAServer 连接 BBServer
AA(例子中是本地电脑)通过ssh首次连接到BB(例子中是Linux的虚拟机),BB会将公钥1(host key)传递给AA,
AA将公钥1存入(登录用户目录下的.ssh文件夹\)known_hosts文件中,
IP 地址 是 BB(Linux虚拟机)的IP
===
以后AA再连接BB时,BB依然会传递给AA一个公钥2,
OpenSSH会核对公钥,通过对比公钥1与公钥2 是否相同来进行简单的验证,
如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。
■公钥 以及 私钥 的内容
■生成公钥 私钥 时,使用到的命令 ssh-keygen 的简单介绍
ssh-keygen -t rsa
(windows系统中,也有这个命令)
====
-t: (type) 指定密钥的加密算法(一般 ed25519 , rsa),省略默认使用RSA。ssh-keygen -t rsa
-b: (bits) 指定密钥的二进制位数,数值越大加密解密的开销越大,同时密钥的安全程度越高,一般设置 1024 或者 2048 ssh-keygen -b 1024
-C: (comment) 指定密钥文件的注释,格式username@host: ssh-keygen -t rsa -b 2048 -C xxx1@email.com 生成
====
ssh-keygen [-q] [-b bits] [-C comment] [-f output_keyfile] [-m format] [-t dsa | ecdsa | ecdsa-sk | ed25519 | ed25519-sk | rsa] [-N new_passphrase] [-O option] [-w provider]
■参考 (工作中使用到的单词(软件开发))
工作中使用到的单词(软件开发)_sun0322的博客-CSDN博客
└40. RAS // ssh-keygen(linux 命令) // private key(私钥) , public key (公钥)
===
■其它通信安全的相关知识
1.什么是:公钥,私钥,证书 ,以及 HTTPS,
2.使用JDK创建证书 (并在 自己的 Web工程中 使用证书)
使用JDK中的 keytool【创建证书】・【查看】・【使用】_sun0322的博客-CSDN博客_keytool查看证书
3.网络通信相关知识(整理在SFDC相关的资料中)
外部系统连接SFDC,获取SFDC侧的数据_sun0322的博客-CSDN博客_sfdc系统
4.证明书安装(no trusted certificate found 时,需要用安装证明书的方式,来通过认证)
HttpClient 使用时,出现「no trusted certificate found」的原因 (JDK没有安装相应的证明书)_sun0322的博客-CSDN博客
Keytool –import –keystore im.jks –file certificate.cer// certificate.cer 是要访问https网站的证明书// 安装后,证明书信息,已被添加到List中keytool -list -keystore cacerts -storepass changeit
5.客户端证书 (和【 https 网站 的 CA证书】, 分别是 两个 证书。)
【客户端证书 (SSL証明書(個人証明書))】是 用于证明客户端用户身份的数字证书
网站如何设置,让访问者,必须在客户端浏览器安装证书后,才能访问网站。
这个一般在服务器端设置:
比如下面链接中介绍的
如何要求客户端出示“客户端证书”后,才能访问网站 - 张天利 - 博客园
---
6.在浏览器中查看 客户端证书・信任的证书
(Edge) ⇒【設定】 ⇒【プライバシー、検索、サービス 】⇒ 【セキュリティ】 ⇒ 証明書の管理
(Edge) ⇒设置 ⇒ 隐私,搜索服务 ⇒ 安全性 ⇒ 管理证书
---
7.ssh,scp,sftp等命令无密码使用(通过公钥,私钥实现)
ssh-keygen(linux 命令) 创建 private key(私钥) , public key (公钥),实现ssh,scp,sftp命令无密码连接_sun0322的博客-CSDN博客
---
■网络通信相关知识
1.tracert 路由查询命令
Windows系统下,tracert路由跟踪指令详解_秦岭熊猫的博客-CSDN博客_windows路由跟踪命令
2.网关和代理服务器的异同
网关和代理服务器的异同_huangshulang1234的博客-CSDN博客_代理服务器和网关的区别
3.密钥库文件格式(.jks(Java Keystore) .ks .jce .p12 .pfx.....), 证书格式(.cer .crt/.rsa .p7c/.p7m/.p7s .p12.....)
证书格式区别 & pvk & spc & cer_steel7c4的博客-CSDN博客_ca证书文件格式
4.cacerts 是一个信任库。信任库用于验证对等方的身份。 // 是certified authority certificates 的缩写
certified 英 [ˈsɜːtɪˌfaɪd] adj. 被证明的,有保证的,具有证明文件的
authority 英 [ɔːˈθɒrɪtɪ] n. 权力;行政管理机构;当局;当权者;权威;权威人士
( authorized [ˈɔːθəˌraɪzd] 权威认可的,经授权的 // 401 Unauthorized )
certificate 英 [səˈtɪfɪkɪt] n.文凭;执照;证明,证书
---