Linux 温习(三): 远程连接(SSH)

2023-02-17 17:13:01 浏览数 (1)

简介

OpenSSH 是 SSH (Secure SHell) 协议的免费开源实现。SSH 协议族可以用来进行远程控制, 或在计算机之间传送文件。而实现此功能的传统方式,如 telnet(终端仿真协议)、 rcp ftp、 rlogin、rsh 都是极为不安全的,并且会使用明文传送密码。OpenSSH提供了服务端后台程序和客户端工具,用来加密远程控制和文件传输过程中的数据,并由此来代替原来的类似服务。

服务端使用

安装 SSH 服务

代码语言:javascript复制
yum install openssh-server

启动 SSH 服务

代码语言:javascript复制
systemctl start(或restart) sshd

设置开机运行 SSH

代码语言:javascript复制
systemctl enable sshd

服务端 config 文件的常用配置参数

SSH 服务端的配置: /etc/ssh/sshd_config

服务端 config 参数

作用

Port

sshd 服务端口号(默认是22)

PermitRootLogin

是否允许以root用户身份登录(默认是可以)

PasswordAuthentication

是否允许密码验证登录(默认是可以)

PubkeyAuthentication

是否允许公钥验证登录(默认是可以)

PermitEmptyPasswords

是否允许空密码登录(不安全。默认不可以)

客户端使用

安装

  • Windows 客户端:安装 Putty、XShell 或 SecureCRT
  • Linux 客户端: yum install openssh-clients
  • macOS 客户端︰默认已经安装了 SSH 客户端

通过 config 配置 SHH

  • config 是英语 configuration 的缩写,表示“配置”
  • config 文件可以配置 SSH,方便批量管理多个 SSH 连接
客户全局 config 文件

SSH 客户端的配置: /etc/ssh/ssh_config

局部 config 文件

  • 局部的客户端config文件在用户家目录的.ssh隐藏目录中
  • ~/.ssh/config
  • 此文件一般默认是没有创建的,可以手动创建
  • 创建完 ~/.ssh/config 文件之后
  • 一般会把 ~/.ssh/config 的权限修改为 600
  • chmod 600 ~.ssh/config

客户端 config 文件的配置例子

代码语言:javascript复制
Host hostname
    HostName 172.20.10.2
    Port 22
    User root

配置总计

SSH 的 config 文件可以帮助我们配置 SSH,config 文件分为全局的 config 文件和局部的 config 文件

全局的 config 文件会对所有用户生效,请谨慎修改。

SSH 免密码登入

验证方法

1. 基于口令

用账户和密码来验证登录

2. 基于密钥的验证
  • 客户机生成密钥对(公钥和私钥),把公钥上传到服务器
  • 并与服务器的公钥进行比较
  • 这种验证登录的方法更加安全,也被称为“公钥验证登录”

公钥验证登录

第 1 步∶在客户机中生成密钥对(公钥和私钥)

  • ssh-keygen (默认使用 RSA 非对称加密算法)
  • 以上命令等价于 ssh-keygen -t rsa
  • ~/.ssh/ 目录下,会新生成两个文件
  • id_rsa.pub :公钥
  • id _rsa:私钥

第 2 步∶把客户机的公钥传送到服务器

  • ssh-copy-id root@172.20.10.2 等价于 ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.20.10.2
  • ssh-copy-id 把客户机的公钥追加到服务器的一个文件
  • authorized_keys
  • ~/.ssh/authorized_keys

设置 SSH 免密码后仍想使用密码登录

代码语言:javascript复制
ssh -o PreferredAuthentications=password -oPubkeyAuthentication=no user@host

总结

  • 公钥需要传输并储存到远程机器上
  • 私钥则存在我们自己的电脑里
  • 之后,SSH 连接就不需要输入密码了

0 人点赞