SSH

本文最后更新于:Monday, December 28th 2020, 5:34 pm

SSH Protocol

Secure Shell (SSH) is a cryptographic network protocol for operating network services securely over an unsecured network.[1] Typical applications include remote command-line, login, and remote command execution, but any network service can be secured with SSH.

摘自维基百科。主要为远程登录建立安全的通道。

1、简要的工作原理

ssh有两种工作方式

  1. 基于口令验证

    只要知道帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但缺点是:不能保证你正在连接的服务器就是你想连接的服务器。以下是登录验证流程:

    口令验证

  2. 基于密钥验证

    密钥验证

2、操作过程(本地win10+服务器centos)

  1. 本地生成密钥对

    1
    2
    "Git Bash Hear"
    ssh-keygen -t rsa

    mark

    可以设置密码,也可以为空(既然为了免密那就设置为空吧,不然没意义了)

    文件路径可选。默认放在~/.ssh/

  2. 上传公钥到服务器上1

    有两种办法:

    1. 自行把刚刚上传的公钥上传到服务器指定用户.ssh/目录下的authorized_keys下。(认证密钥可以有很多把,多个localhost可以各自上传自己的🔒到服务器上。也可以所有人公用一把锁。)

    2. ssh-copy-id -i [./y.pub] username@ip (-i指定路径,默认是在.ssh下)

      这一步也是要认证密码的。不然什么人都可以上锁就乱套。

  3. 免密登录服务器

    1
    ssh -i[dir] username@ip (-i指定密钥所在,默认在.ssh/下)

    如果之前产生密钥对时设置了密码,这里还是要输入一遍哪个密码的。如果为空就可以直接免密进入了

  4. 脚本文件加速登录2

    1. 随便选择个文件夹,写一个config文件

    2. Host vps                              # 一个便于你区别这是哪台机器的名字
          HostName 47.95.247.18               
          User git                          # 登录主机的用户名称
          Port 22                                      
          IdentityFile ~/.ssh/id_rsa        # 密钥所在的文件位置
      
    3. ssh -F [config file] vps(指定配置文件位置)就可以直接登录你设置的那台主机


可能遇到的问题3
  1. Authentication refused: bad ownership or modes for directory /root/.ssh

    ls -l /root/.ssh

    发现改目录的所有者不是root。只用改成root即可

    chown -R root.root /root/.ssh

Reference

[1] SSH 三步解决免密登录

[2] ssh配置config快速登录

[3] 解决权限问题


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