liunx中ssh服务相关知识
最近课程讲到了ssh服务 故此做个记录
1)ssh是什么涅?
SSH 叫安全外壳协议(Secure Shell),是一种加密的网络传输协议,可在不安全的网络中网络服务提供安全的传输环境。它通过在网络中创建安全隧道来实现 SSH 客户端和服务器之间的连接。
2)ssh的原理是什么涅?
SSH 之所以一经提出,就得到了快速发展,是因为数据的安全性对任何人都非常重要。这里我们对其保护数据安全的原理进行探究。
在聊加密前先介绍一下几个密码学的基本概念:
- 明文
plaintext
指传送方(一般指客户端)想要接受方(一般指服务端)获得的可读信息 - 密文
ciphertext
指明文进过加密后所产生的信息 - 秘钥
key
指用来完成加密、解密、完整性验证等密码学应用的密码信息,是明文转换为密文或密文转换为明文的算法需要的参数 - 私钥 指私有的秘钥
- 公钥 指公开的秘钥
常见的加密有两种:对称加密和非对称加密
对称加密: 加密和解密的秘钥使用的是同一个.
非对称加密: 与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。
对称加密算法: 密钥较短,破译困难,除了数据加密标准(DES),另一个对称密钥加密系统是国际数据加密算法(IDEA),它比DES的加密性好,且对计算机性能要求也没有那么高.
优点:
算法公开、计算量小、加密速度快、加密效率高
缺点:
在数据传送前,发送方和接收方必须商定好秘钥,然后 使双方都能保存好秘钥。其次如果一方的秘钥被泄露,那么加密信息也就不安全了。另外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的唯一秘钥,这会使得收、发双方所拥有的钥匙数量巨大,密钥管理成为双方的负担。
常见的对称加密算法有: DES、3DES、Blowfish、IDEA、RC4、RC5、RC6 和 AES
非对称加密算法: 公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。
非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥并将其中的一把作为公用密钥向其它方公开;得到该公用密钥的乙方使用该密钥对机密信息进行加密后再发送给甲方;甲方再用自己保存的另一把专用密钥对加密后的信息进行解密。甲方只能用其专用密钥解密由其公用密钥加密后的任何信息。
优点:
安全
缺点:
速度较慢
常见的非对称加密算法有: RSA、ECC(移动设备用)、Diffie-Hellman、El Gamal、DSA(数字签名用)
3)ssh登录与免密登录的方式
登录方式:ssh 用户名@ip地址
免密登录方式:
生成公共身份验证密钥并将其附加到远程主机 ~/.ssh/authorized_keys 文件即可。
具体步骤:
检查现有的 SSH 密钥对。
在生成新的 SSH 密钥对之前,首先检查您的客户端计算机上是否已有 SSH 密钥,因为您不想覆盖现有密钥。
运行以下 ls 命令以查看是否存在现有 SSH 密钥:ls -al ~/.ssh/id_*.pub
如果存在现有密钥,您可以使用这些密钥并跳过下一步或备份旧密钥并生成新密钥。
如果您看到 No such file or directory 或 no matches found 意味着您没有 SSH 密钥,则可以继续执行下一步并生成新密钥。生成新的 SSH 密钥对。
以下命令将生成一个新的密钥对:ssh-keygen
按 Enter 接受则默认文件位置和文件名:Enter file in which to save the key (/home/yourusername/.ssh/id_rsa):
接下来,ssh-keygen 工具将要求您键入安全密码。无论您是否想要使用密码短语都取决于您,如果您选择使用密码短语,您将获得额外的安全保护。在大多数情况下,开发人员和系统管理员使用 SSH 而不使用密码,因为它们对完全自动化的流程很有用。如果您不想使用密码短语,请按 EnterEnter passphrase (empty for no passphrase):
要确认是否已经生成 SSH 密钥,您可以使用以下命令列出新的私钥和公钥:
ls ~/.ssh/id_* /home/yourusername/.ssh/id_rsa /home/yourusername/.ssh/id_rsa.pub
复制公钥
现在您已经生成了 SSH 密钥对,为了能够在没有密码的情况下登录到您的服务器,您需要将公钥复制到您要管理的服务器。
将公钥复制到服务器的最简单方法是使用名为的命令 ssh-copy-id 。在您的本地机器终端类型:ssh-copy-id remote_username@server_ip_address
系统将提示您输入 remote_username 的密码:remote_username@server_ip_address's password:
用户通过身份验证后,公钥将附加到远程用户 authorized_keys 文件,并且将关闭连接。
如果由于某种原因, ssh-copy-id 本地计算机上没有该实用程序,则可以使用以下命令复制公钥:cat ~/.ssh/id_rsa.pub | ssh remote_username@server_ip_address "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
使用 SSH 密钥登录服务器
完成上述步骤后,您应该能够登录到远程服务器而不会被提示输入密码。
尝试通过 SSH 登录到您的服务器:ssh remote_username@server_ip_address
如果一切顺利,您将立即登录。
4)参考资料
深入了解SSH————知乎
如何设置SSH免密登录————CSDN