1. 应用场景
常用于远程登录系统[服务器, 如云服务器, AWS, 阿里云, 腾讯云等], 但是也并非一定安全的, 可以参看--下面维基百科介绍 弄清楚工作的原理。 |
2. 学习/操作
1. 文档
2. 整理输出2.1 介绍ssh(安全外壳协议)_百度百科 //百度百科 https://zh.wikipedia.org/wiki/Secure_Shell //维基百科
补充“不安全的网络” 举例说明
ssh如何解决云存储提供商数据泄露等安全问题?
中间人攻击 介绍
2.2 SSH的工作原理SSH(Secure Shell)的工作原理是通过加密和身份验证来保障网络通信的安全性。 具体来说,SSH的工作流程如下:
总体来说,SSH通过加密和身份验证来保护网络通信的安全性,使得远程访问和管理操作系统更加安全可靠。 2.3 设置 ssh 免密码登录远程服务器由于在上线和运维过程中,可能需要到多次登录到远程服务器,每次都要输入密码很麻烦. 我们可以设置以加密的方式免密码通过 ssh 登录远程 Linux 主机,这样可以节省很多时间,也能解决你忘记密码的烦恼。 生成私钥公钥文件 即SSH提供两种方式之一的密钥对验证 如果你的本地主机不包含
每次执行上述命令后产生的私钥文件都不同,如果 运行该命令会生成 接下来我们通过
记得将命令中的
将公钥添加到授权KEY登录到远程服务器,运行如下命令将公钥文件内容追加到
如果服务器上没有
接下来,我们在本地主机测试通过 ssh 登录远程服务器: 注意将上述命令中的 IP 地址替换成自己的服务器公网 IP,这样一来,就可以无需输入密码即可登录远程服务器了,非常方便。 Note:上面是阿里云ECS, 阿里云已经提供配置SSH服务, 可以界面化操作 具体操作参考: 配置 SSH 密钥 - 云效2020 - 阿里云 -- 跟github配置ssh是一样的,就是将本机的公钥放到远程服务器,从而远程服务器能确保你是你「私钥在本机」。 注意密钥对[公钥]与instance只能绑定一 一对应, 一个公钥对应一个instance 猜测这是云服务商设置的限制「TBD」 如果已经有instance绑定了某台PC的公钥,需要先解除绑定,然后再绑定另外的ssh公钥 然后重启instance才能生效。 后续补充 ... |
3. 问题/补充
1. 但是遇到一个问题,就是ssh远程到服务器,如果没有活动,很快就会被强制退出,还需要重新连接,有时候会让人有点小困扰。解决方案:⚠️ 不要在正式服上做这样的修改!要配置服务器的SSH连接存活时间,可以通过修改SSH服务器的配置文件来设置超时时间。具体来说,需要按照以下步骤进行操作: 1. 编辑SSH服务器的配置文件:打开SSH服务器的配置文件/etc/ssh/sshd_config,并找到以下行:
这两行通常是被注释掉的或者没有出现在配置文件中。它们用于设置SSH连接的存活时间和检查频率。 2. 设置SSH连接的存活时间:取消注释“ClientAliveInterval”行,并将其值设置为所需的秒数。例如,要将SSH连接的存活时间设置为10分钟(600秒),则可以将该行更改为:
这意味着如果SSH客户端在10分钟内没有向服务器发送任何数据,则服务器将向客户端发送一个保持连接的消息。 3. 设置SSH连接的检查次数:取消注释“ClientAliveCountMax”行,并将其值设置为所需的次数。默认情况下,这个值是3,也就是说,如果客户端没有响应服务器发送的保持连接消息3次连续,那么服务器将自动断开连接。例如,要将此值设置为5,可以将该行更改为:
4. 重新加载SSH服务器配置:在保存更改后,请重新启动SSH服务器或执行以下命令使更改生效:
这将重新加载SSH服务器的配置文件,并使更改生效。// 同时还要退出本次连接,重新ssh到远程服务器才会发挥效果。 通过以上步骤,就可以成功地设置SSH连接的存活时间和检查次数。 需要注意的是,如果您在客户端上使用了SSH会话保持工具(例如tmux或screen),则可能需要将其定期刷新以避免被SSH服务器断开连接。 补充
2. “SSH作为一种加密协议,可以提高数据传输的安全性,并在一定程度上减少云存储提供商数据泄露等安全问题的风险。” 是否表述有误
3. SSH和SSL/TLS之间的关系SSH和SSL/TLS都是用于加密通信的协议,但它们有不同的设计目标和使用场景。 SSH(Secure Shell)是一种网络协议,主要用于在不安全的网络上安全地远程访问计算机系统。SSH提供了身份验证、数据加密和数据完整性保护等安全功能,可防止被窃听、篡改和伪造。SSH通常用于连接远程服务器、管理网络设备和传输文件等场景。 SSL/TLS(Secure Sockets Layer/Transport Layer Security)是另一种加密协议,主要用于保护Web浏览器和Web服务器之间的通信。SSL/TLS可以确保数据传输的隐私性、完整性和身份验证,可防止中间人攻击和数据泄露。SSL/TLS常用于网站加密通信、电子邮件安全和虚拟专用网络(VPN)等场景。 虽然SSH和SSL/TLS都提供了安全通信的基本功能,但它们的应用领域和实现方式不同。SSH更适合远程访问和管理操作系统,而SSL/TLS更适合保护Web应用程序和其他互联网服务。 4. "客户端提供身份验证信息" 中的证书 有谁提供,证书中内容有哪些在SSH中,客户端提供身份验证信息的方式之一是基于证书的身份验证(Public Key Authentication)。 这种身份验证方式需要客户端提供自己的公钥证书。【是将客户端的公钥证书提供配置到服务端】 公钥证书通常由数字证书颁发机构(Certificate Authority,简称CA)或者自签名证书机构(Self-Signed Certificate Authority)签发。数字证书颁发机构是可信任的第三方机构,它为公众和组织颁发数字证书,并对这些证书进行管理和监督。而自签名证书机构则是由组织自行创建的证书管理机构,自签名证书不会得到公共信任。 公钥证书一般包含以下内容:
公钥证书的作用是验证客户端身份的真实性和合法性,以及保证数据传输的安全性和完整性。 在SSH中,服务器通过验证客户端提供的公钥证书,确认客户端的身份,从而决定是否允许其访问服务器资源。 补充在SSH中,基于证书的身份验证需要客户端和服务器双方各自拥有公钥和私钥。客户端将自己的公钥安装到远程服务器中,而私钥则留存在客户端本地。当客户端连接到远程服务器时,它会用自己的私钥来进行身份验证,从而证明自己的身份。 因此,在使用SSH连接远程服务器时,您需要在本地计算机上保存自己的私钥,并将相应的公钥安装到远程服务器中。这样,当您连接到远程服务器时,SSH协议会使用您本地计算机上的私钥来进行身份验证,并且利用公钥加密技术保证通信数据的安全性和完整性。 5. .ssh/known_hosts 介绍ssh/known_hosts是SSH客户端保存已知主机公钥的文件,通常位于用户家目录下的.ssh目录中。 当SSH客户端第一次连接到一个新的SSH服务器时,它会将该服务器的公钥保存到该文件中,以便后续连接时进行验证。 每个条目由三部分组成:主机名、公钥算法和公钥指纹。例如:
其中,"example.com"是SSH服务器的主机名,"ssh-rsa"是公钥算法,"AAAAB3NzaC1yc2EAAAADAQABAAABAQCszGeJgKfZwRdYk…"是公钥指纹(该指纹经过哈希计算,用于验证所保存的公钥是否与远程服务器的公钥匹配)。 当SSH客户端连接远程服务器时,它会首先检查远程服务器的公钥是否存在于本地的known_hosts文件中。 如果找到了匹配的公钥,则SSH客户端会使用该公钥对服务器身份进行验证。如果没有找到匹配的公钥,则SSH客户端会提示用户确认是否信任该服务器,并询问是否将其公钥保存到known_hosts文件中。 通过使用known_hosts文件,SSH客户端可以防止中间人攻击等安全问题,提高SSH连接的安全性。 6. 问题: 为什么SSH客户端使用服务器的私钥连接到远程服务器?
7. 使用ssh-keygen -t rsa 生成的公钥和私钥 有数字签名吗使用ssh-keygen命令生成的公钥和私钥是基于非对称加密算法的,其中包含数学上相关的公钥和私钥。这些密钥不直接包含数字签名,但可以用于进行数字签名。 在SSH中,公钥和私钥通常用于基于证书的身份验证,客户端将自己的公钥安装到远程服务器中以进行身份验证。当客户端与远程服务器进行握手时,远程服务器会发送自己的公钥给客户端,并要求客户端提供相应的数字签名来证明身份。客户端使用自己的私钥进行签名,然后将签名发送给服务器,由服务器验证签名是否有效。这样,就实现了身份验证的过程。 需要注意的是,在SSH中,数字签名一般是在基于证书的身份验证之上进行的,而不是直接使用公钥和私钥进行数字签名。也就是说,使用ssh-keygen命令生成的公钥和私钥虽然没有直接包含数字签名,但可以用于进行数字签名,以保证数据传输的安全性和完整性。 |
后续补充
...