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

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

简介

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

服务端使用

安装 SSH 服务

yum install openssh-server


启动 SSH 服务

systemctl start(或restart) sshd


设置开机运行 SSH

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 文件的配置例子

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 免密码后仍想使用密码登录

ssh -o PreferredAuthentications=password -oPubkeyAuthentication=no user@host


总结

  • 公钥需要传输并储存到远程机器上
  • 私钥则存在我们自己的电脑里
  • 之后,SSH 连接就不需要输入密码了
目录
相关文章
|
2月前
|
Web App开发 搜索推荐 Unix
Linux系统之MobaXterm远程连接centos的GNOME桌面环境
【10月更文挑战第21天】Linux系统之MobaXterm远程连接centos的GNOME桌面环境
334 4
Linux系统之MobaXterm远程连接centos的GNOME桌面环境
|
1月前
|
监控 Ubuntu Linux
使用VSCode通过SSH远程登录阿里云Linux服务器异常崩溃
通过 VSCode 的 Remote - SSH 插件远程连接阿里云 Ubuntu 22 服务器时,会因高 CPU 使用率导致连接断开。经排查发现,VSCode 连接根目录 ".." 时会频繁调用"rg"(ripgrep)进行文件搜索,导致 CPU 负载过高。解决方法是将连接目录改为"root"(或其他具体的路径),避免不必要的文件检索,从而恢复正常连接。
|
3月前
|
安全 Linux 网络安全
Linux端的ssh如何升级?
Linux端的ssh如何升级?
318 59
|
4月前
|
编解码 安全 Linux
在Linux中,常用的远程连接⼯具有那些?
在Linux中,常用的远程连接⼯具有那些?
|
4月前
|
机器学习/深度学习 存储 Linux
【机器学习 Azure Machine Learning】使用VS Code登录到Linux VM上 (Remote-SSH), 及可直接通过VS Code编辑VM中的文件
【机器学习 Azure Machine Learning】使用VS Code登录到Linux VM上 (Remote-SSH), 及可直接通过VS Code编辑VM中的文件
|
4月前
|
安全 网络协议 Linux
在Linux中,什么是SSH,并且如何使用它?
在Linux中,什么是SSH,并且如何使用它?
|
4月前
|
监控 安全 Ubuntu
在Linux中,如何进行SSH服务配置?
在Linux中,如何进行SSH服务配置?
|
4月前
|
安全 算法 Linux
在Linux中,什么是SSH?它是如何工作的?
在Linux中,什么是SSH?它是如何工作的?
|
4月前
|
Linux 网络安全 Python
Linux离线安装Python时ssh和hashlib死活安装不上的解决方案
本文提供了Linux环境下离线安装Python时遇到的"ImportError: No module named _ssl"和"ERROR:root:code for hash md5|sha1|sha224|sha256|sha384|sha512 was not found"两个问题的解决方案,通过设置OpenSSL环境变量和编辑Python源码配置文件来解决。
70 1
|
4月前
|
Linux 网络安全
Linux开启ssh
Linux开启ssh
41 0