概念

  1. 全称:Secure Shell,应用层协议,默认端口22
  2. 采用非对称加密RSA
  3. 功能:专为远程登录提供安全性协议
  4. 优点
    1. 网络传输数据加密
    2. 防止DNS、IP欺骗
    3. 数据压缩传输

      登录

      1. 口令登录

      ssh [-p PORT] USER@IP

默认端口22,可指定-p PORT

2. 密钥登录

ssh [-i FILE] USER@IP

默认密钥文件在~/.ssh/下,可指定-i FILE

常见问题

1. SSH免密登录(即密钥登录)

本质是将客户机的公钥拷贝至服务器的authorized_keys文件中保存起来
步骤

  1. 客户机中生成公私钥:ssh-keygen
  2. 拷贝公钥到服务器:ssh-copy-id user@ip

    2. SSH登录后闲置时间过长而断开连接

    原因

    由于Linux安全设置,在一段时间内没有使用数据的情况下会自动断开

解决

让本地或者服务器隔一段时间发送一个请求给对方即可

方案

A:调整参数ClientAliveInterval、ClientAliveCountMax

编辑服务器配置文件/etc/ssh/sshd_config

  1. ClientAliveInterval:服务器给客户端发送心跳的间隔时间(s)
  2. ClientAliveCountMax:客户端无响应最大次数(超时服务器将自动断开连接)

B:调整客户机配置文件参数(推荐)

编辑客户机配置文件~/.ssh/config``/etc/ssh/ssh_config

  1. Host *
  2. ServerAliveInterval:# 客户端给服务器发送心跳的间隔时间(s),每隔xxx秒就向服务器发送一个请求
  3. ServerAliveCountMax:# 服务器无响应最大次数(超时客户端会断开连接),允许超时的次数,一般都会响应,推荐3

3. SSH禁止Root远程登录

编辑服务器配置文件/etc/ssh/sshd_config

  1. PubkeyAuthentication yes # (禁用)密钥登录
  2. PasswordAuthentication no # (禁用)密码登录
  3. PermitRootLogin no # (禁用)root能SSH登录

参考资料

  1. SSH简介及两种远程登录的方法_德prince-CSDN博客_ssh
  2. https://www.jianshu.com/p/14027e35b900 解决Permission denied (publickey)问题 .ssh/authorized_keys中无公钥

    思考

    1. 定性,ssh是什么?用来做什么即功能用途?
    2. 使用,如何去使用?常用用途哪些?
    3. 原理,底层是如何实现的?与其他子部分关联起来?为什么要实现?
    4. 对比,存在哪些优缺点?同类型有哪些?
    5. 拓展,如何改善已有缺陷?若是自己该如何设计?
    6. 如何去组织文章内容?