0%

折腾云服务器(Ubuntu)之ssh篇

使用工具

  • PowerShell
  • 浏览器
  • 一台 Ubuntu 22 服务器

过程

  1. 首先购买一台适合的云服务器,然后放开在云服务器厂商的面板的「安全策略」上默认入站端口22,给本地的机器提供连接云服务器的能力
  2. 此时就可以直接在本地的机器上使用命令来访问云服务器了
    1
    2
    # 遵守以下格式输入相应的信息回车,输入正确的密码就可以访问了
    ssh -i username@ip_address
    但是怎么可能现在就停下!毕竟我们是懒人!
    接着为了以后的舒服而努力,简化登录过程和提高安全性
    采用密钥的登录方式
  3. 在云服务器厂商的面板里面生成一个ssh安全密钥,并绑定你想要连接的服务器实例上
  4. 把拿到手的密钥文件存放到适合的位置 我放在 C:\User\username\.ssh 文件夹中,直接方便管理和配置了
  5. 打开在 C:\User\username\.ssh 中的 config 文件,在里面按照
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Host server_name
    HostName ip_address
    User user_name
    IdentityFile .pem_file_path
    Port port

    # 解释:
    # server_name:是你希望使用命令登录的服务器的代替名字
    # ip_address:是你的服务器的具体ip地址
    # user_name:是你希望登录的该服务器内的账户的名字
    # .pem_file_path:是你的安全密钥存放在的地址
    # port:是你通过哪个端口来访问你的服务器(默认是22,如果没有改过可以不用特意写这一条)
  6. 保存文件
  7. 回到 PowerShell 中,直接使用以下格式的命令
    1
    ssh server_name

结果

这样就可以安全的访问到我们想要访问的的服务器了

  • 无密码传输
  • 登录更便捷

只需要保管好密钥文件不要泄露就属于绝对安全的方式

一些可能需要注意到的坑

如果生成了两个名字相同的安全密钥

复现步骤:

  1. 生成一个 win.pem
  2. 在本地已经使用过这个密钥连接过服务器
  3. 在本地和云服务器均删除了密钥文件
  4. 再次生成一个 win.pem 文件
  5. 放回到相同位置
  6. 使用ssh连接
  7. PowerShell报错 :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

    @    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @

    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

    IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!

    Someone could be eavesdropping on you right now (man-in-the-middle attack)!

    It is also possible that a host key has just been changed.

    The fingerprint for the ED25519 key sent by the remote host is

    SHA256:X/rCSY3s8mgmkiS/aNn0JZSF2+BwhhOmnkIA1GmbYxM.

    Please contact your system administrator.

    Add correct host key in C:\\Users\\User/.ssh/known_hosts to get rid of this message.

    Offending ECDSA key in C:\\Users\\user/.ssh/known_hosts:7

    Host key for ip_address has changed and you have requested strict checking.

    Host key verification failed.

问题解析:

第一次成功连接服务器 server_name 时,你的电脑(SSH 客户端)会把那台服务器的“指纹”(也就是 Host Key)保存在 C:\Users\user\.ssh\known_hosts 文件里。这就像是给你的服务器拍了张“快照”存起来。

现在,当你再次连接 server_name 时,服务器提供了一个新的、不一样的“指纹”。你的电脑将新指纹和之前保存的旧指纹一对比,发现不匹配,于是立刻发出警告并拒绝连接。它这么做是出于安全考虑,因为它无法确定是哪种情况

解决方法

删除保存在你电脑里的那条旧的、错误的指纹记录,然后重新连接一次,让 SSH 客户端接受并保存新的正确指纹

1
2
3
ssh-keygen -R ip_address
# 解释
# 这个命令会找到 known_hosts 文件中与 ip_address 相关的所有记录并自动删除它们