笔记:ssh 相关¶
TODO: 重新整理一下再写,有点乱
SSH(Secure SHell)是一个网络协议,用于加密方式远程登录到服务器,以及在服务器之间进行加密的数据传输。
非对称加密¶
非对称加密是一种加密方法,它使用一对密钥:公钥和私钥。公钥可以公开分享,而私钥则必须保密。基本性质有四条:
- 私钥加密的数据能被公钥解密
- 公钥加密的数据也能被私钥解密
- 公钥加密的数据不能被公钥解密
- 无法(或计算上不支持)从被加密数据中逆推出私钥
基于这四条性质,这个系统中能进行以下两件事:
- 加密:发送方使用接收方的公钥加密信息。只有拥有对应私钥的接收方才能解密这些信息。
- 数字签名:发送方使用自己的私钥对信息进行签名,并发布公钥。任何人都可以使用发送方的公钥来验证签名,确保信息的完整性和来源。
性质 2-4. 保证发送方的数据只能被接收方解密,只要安全地获取对方的公钥就能保证发出的信息只会被对方收到。当双方互相持有对方的公钥时,就能保证双方通信的安全性,从而保证了系统内通信的安全性。性质 1、4. 保证了接收方能够验证发送方信息的完整性,因为如果有人篡改了信息,无论是被签名的信息还是公钥,都会导致接收方无法解密,从而知道信息被篡改。
补充:数字签名只能确认信息的内容是发送方想要发送的内容,但发送方发送的内容是否可信是另一个问题,因此在大型网络中通常会引入第三方监察,诞生了 CA 证书机制来应对这一问题。
摘要算法¶
- 质询:
了解非对称加密和摘要算法后,下面的内容就非常简单了。
ssh¶
见参考文献 2.(有改动)
ssh 服务是一个守护进程(demon),系统后台监听客户端的连接,ssh 服务端的进程名为 sshd,负责实时监听客户端的请求(IP 22端口),包括公钥交换等信息。
ssh 服务端由2部分组成: openssh(提供 ssh 服务) 和 openssl(提供加密的程序)
服务器启动的时候自己产生一个公钥(768bit),本地的 ssh 客户端发送连接请求到 ssh 服务器,服务器检查连接点客户端发送的数据和 IP 地址,确认合法后发送公钥(768bit)给客户端,此时客户端将本地私钥(256bit)和服务端的公钥(768bit)结合成密钥对key(1024bit),发回给服务器端,建立连接通过key-pair数据传输
ssh-keygen¶
ssh-keygen 是一个用于生成、管理和转换认证密钥的工具,支持 RSA 和 DSA 两种密钥类型。
命令格式¶
具体操作流程¶
- 登录客户机(如A机器)。
- 生成密钥对:
这会生成两个文件:id_rsa(私钥文件)和 id_rsa.pub(公钥文件)。
- 复制公钥到目标机(如B机器)的
.ssh目录,并追加到authorized_keys文件中:
- 设置文件和目录权限:
确保 .ssh 目录和 authorized_keys 文件只有用户自己有写权限。
一些具体场景¶
单向登录¶
- 目的:使客户机(A)能够无需密码登录到目标机(B)。
- 操作:在客户机上生成密钥对,并将公钥复制到目标机的
authorized_keys文件中。
双向登录¶
- 目的:使两台机器能够互相无需密码登录。
- 操作:在两台机器上分别生成密钥对,并将对方的公钥复制到自己的
authorized_keys文件中。
权限设置¶
- 目的:确保安全,防止未授权访问。
- 操作:设置
authorized_keys和.ssh目录的权限,防止其他用户访问。
错误处理¶
- 常见错误:权限设置不当、密钥未正确复制等。
- 解决方法:检查权限设置,确保密钥文件正确复制到目标位置。
更新SSH密钥¶
- 目的:更新密钥以增强安全性或修复权限问题。
- 操作:
ssh-keygen -t dsa
scp ~/.ssh/id_dsa.pub [YOUR_USER_NAME]@10.38.116.33:authorized_keys
ssh [YOUR_USER_NAME]@10.38.116.33
配置SSH客户端¶
- 目的:简化SSH登录操作。
- 操作:编辑
~/.ssh/config文件,添加以下内容:
这样,你可以通过 ssh 10.38.116.33 直接登录,而不需要每次都输入用户名。