服务器部署-SSH

本文最后更新于:2021年3月15日 晚上

环境

  • Centos7.2 腾讯云服务器

信息

SSH全称是Secure ShellSSH协议是基于应用层的协议,为远程登录会话和其他网络服务提供安全性的协议。

SSH使用最多的是远程登录和传输文件,实现此功能的传统协议都不安全(ftptelnet等),因为它们使用明文传输数据。而SSH在传输过程中的数据是加密的,安全性更高。

工作原理

SSH协议传输是基于(非对称加密方法的)[https://zh.wikipedia.org/zh-cn/%E5%85%AC%E5%BC%80%E5%AF%86%E9%92%A5%E5%8A%A0%E5%AF%86]

文件路径

  • 服务端
    若远程服务器是新系统,会在/etc/ssh目录下生成一个名为ssh_host_ecdsa_key.pub的公钥,同时生成一个名为ssh_host_ecdsa_key的私钥,这一对就是远程服务器的公钥与私钥
    之后每次启动sshd服务的时候,系统会自动在此路径下查找公钥

  • 客户端
    客户端将服务器传来的公钥记录在~/.ssh/known_hosts中,若是已经记录有该服务器公钥,则比对是否一致,一致后就计算客户端自己的公私钥。发送自己的公钥给服务器

更多

实际上这个过程比上面描述的要复杂很多
比如说DH秘钥交换的密钥交换算法就是一种多种加密算法混合的算法

认证方式

密码

  • 连接服务器的各类型密码不应低于8位(建议20位)
  • 密码字符涵盖类型越多越好。数字、英文大写、小写、特殊字符

如果没有什么特殊需求,建议使用密钥

密钥

作为密码的更好的替代品存在的东西存在
载体是一个文件,认证以后就不用频繁的输入密码了

操作

SSH配置文件修改

由于很多操作其实都是编辑SSH的配置文件,这里先给出打开方式

1
vi /etc/ssh/sshd_config

在进行完修改以后,重新启动SSH服务以应用设置

1
service sshd restart

SSH禁止使用root用户直接登录

想要获取root权限?先用普通用户登录再切换用户

注意,要是没有其它用户又禁用了root用户就会很麻烦

  1. 打开SSH配置文件

  2. 找到对应项并设置为no

    1
    PermitRootLogin no

    修改SSH端口

    如果SSH端口不是22,那就不能直接暴力破解了,需要扫描很多的端口才能发现真的SSH端口,浪费黑客的时间

    注意防火墙的问题,连不上就麻烦了

  3. 打开SSH配置文件

  4. 找到 #Port 22
    这东西本身就被注释了,找到这个东西只是为了将一类设置写一起

    1
    2
    # Port 22
    Port 51369 # 设置自定义的端口51369

    创建SSH密钥来登录

    虽然理论中说了要双方公钥交换,但实际上只要有一对连接上了,另一个会被自动创建
    因此有两种方式来创建密钥

  • 客户端创建密钥,将公钥给服务器
  • 服务器创建密钥,将私钥给客户端,自己将公钥注册下来

以下方式为第二种

  1. SSH设置允许密钥登录
    1. 打开SSH配置文件
    2. 编辑配置
      1
      2
      RSAAuthentication yes
      PubkeyAuthentication yes
  2. 切换到希望创建密钥的用户,创建密钥对
    1
    ssh-keygen
    过程中会需要你输入一些东西,要是不知道是什么,可以直接回车不管
    1
    2
    3
    Enter file in which to save the key (/home/用户名/.ssh/id_rsa):  # 设置密钥文件保存路径
    Enter passphrase (empty for no passphrase): # 设置密钥锁码
    Enter same passphrase again: # 密钥锁码确认
    最后会有一些提示
    1
    2
    3
    4
    # 你的私钥保存在这里
    Your identification has been saved in /home/manager/.ssh/id_rsa.
    # 你的公钥保存在这里
    Your public key has been saved in /home/manager/.ssh/id_rsa.pub.
  3. 服务器公钥注册
    1. 来到.ssh目录
      1
      cd ~/.ssh
    2. 注册公钥
      1
      cat id_rsa.pub >> authorized_keys

      有些时候会遇到权限的问题,把权限设置得高一些就可以解决

      1
      chmod 600 authorized_keys
  4. 重启SSH以应用设置
    1
    service sshd restart
  5. 客户端获取密钥私钥文件
    使用scp命令即可,这里是从服务器把私钥下载下来,放到E盘
    1
    scp root@192.168.1.2:/home/manager/.ssh/id_rsa E:/ 
  6. 客户端使用私钥
    这里以putty为例
    1. 将密钥转为putty能使用的类型的密钥文件
    2. 在登录时应用密钥

禁用密码登录

  1. 打开SSH配置文件
  2. 修改配置
    1
    PasswordAuthentication no

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!