ssh配置(二、登录服务器)

一. 登录 linux 服务器的两种方式

  1. 使用 ssh用户名密码 的方式登录,但这种方式不安全,密码太简单容易被暴力破解,密码太复杂又不容易记。
  2. 使用 ssh公私钥 的方式登录。
  • 以上两种方式都可以在图形化软件工具中配置,例如 finalshell , Putty , Xshell 等。本次介绍 ssh公私钥 登录。

二. 原理的通俗解释

  • ssh公私钥 登录解决的问题是登录时的用户身份验证问题,默认使用 RSA(也支持其他算法: RSA、DSA、ECDSA、EdDSA、Ed25519 ,它们在效率,安全性上有所区别)
  • 完整的流程
  1. 本地配置
  2. 在本地生成一对公私钥。
  3. 在目录 ~/.ssh/ 下创建 config 文件(如果有的话直接编辑),添加对应服务器的配置,格式固定。
  4. 服务器配置
  5. 开启 ssh秘钥 登录(高版本都是默认开启秘钥登录的,如果安装了宝塔面板需要单独设置开启)。
  6. 上传用户的本地公钥到服务器。
  7. 秘钥登录
  • 终端使用 ssh xxx 登录时,ssh 会根据config文件中的秘钥位置和用户信息自动验证用户身份,完成登录。

三. 相关文件

  • 本地 ssh 相关的文件都在 ~/.ssh/ 下,本次用到的相关文件

    • id_rsaid_rsa.pub :默认一对公私钥的名字,可以有多对,使用命令 ssh-keygen 生成。
    • config :配置 目标服务器 的登录信息,有固定格式,默认可能没有这个文件需要自己创建。
    • known_hosts :当替换了原有 host 的公钥时,需要去这个文件里删除对应的 host 记录。
  • 服务器 ssh 相关的文件

    • /etc/ssh/sshd_config :配置 ssh,例如是否允许 root 登录,是否允许密码登录,是否允许秘钥登录。
    • ~/.ssh/authorized_keys :将本地公钥保存到该文件中,各占一行,中间不要回车。

四. 关键步骤

  1. 生成秘钥对,可以检查目录 ~/.ssh/ 下是否有秘钥对,如果没有则重新生成。
# 给 邮箱[email protected] 生成公私钥
# -t 参数:指定算法 ed25519,更加高效和安全
# -C 参数:指定公私钥中的注释,一般用邮箱或用户名,不影响使用
ssh-keygen -t ed25519 -C "[email protected]"
# 输入命令后,如果不需要密码的话,连续3个回车。最后得到了两个文件:id_rsa和id_rsa.pub。
  1. 创建配置 ~/.ssh/config 文件。
# 格式如下,可以配置多个,格式类似
Host server-abc
    HostName 1.2.3.4
    User root
    IdentityFile ~/.ssh/id_rsa
  1. 服务器开启秘钥登录
  • 高版本 linux 都是默认开启 秘钥登录 的,如果没有开启,可以参考以下文件中的参数。
  • /etc/ssh/sshd_config 中的参数
      Port                        # 设置端口
      PasswordAuthentication yes  # 是否支持 密码 登录
      PubkeyAuthentication yes    # 允许秘钥登录
      PermitRootLogin yes         # 允许root登录
    
  1. 添加公钥到 服务器。
  • 复制 id_rsa.pub 文件里的内容,到服务器的 ~/.ssh/authorized_keys 文件中,每个公钥各占一行。
  1. 验证是否可以登录。
# 之前的登录方式
ssh [email protected]  # 之后输入密码
# 新的登录方式
ssh server-abc

五. 命令总结

# 生成秘钥
ssh-keygen -t ed25519 -C "[email protected]"
# 开启 ssh 秘钥登录,高版本默认开启,
# 如果安装了宝塔面板,需在面板设置中单独开启
# 如需开启 root 秘钥登录或其他设置,参考以下文件
/etc/ssh/sshd_config
# 添加用户本地公钥到服务器该文件中
~/.ssh/authorized_keys
# 原始的用户名密码登录方式
ssh username@ipaddress
# 方便的秘钥登录方式
ssh host

你可能感兴趣的:(ssh,登录服务器)