SSH(Secure Shell)的作用

    • 远程登录

      • SSH 允许用户通过网络安全地登录到远程计算机系统。例如,系统管理员可以从自己的办公电脑使用 SSH 登录到公司机房的服务器,进行系统维护、软件安装、配置修改等操作。与传统的远程登录协议(如 Telnet)相比,SSH 对传输的数据进行加密,能够防止数据在网络传输过程中被窃取或篡改。
    • 安全的文件传输

      • 除了登录,SSH 还支持基于安全通道的文件传输。比如,可以使用 SCP(Secure Copy)和 SFTP(SSH File Transfer Protocol)这两个基于 SSH 的工具。SCP 主要用于在本地和远程主机之间复制文件,就像传统的 CP 命令一样,但是它是加密传输的。SFTP 则提供了一个更像 FTP(文件传输协议)的界面,用于在 SSH 连接上进行文件的上传和下载操作,并且具有和 SSH 相同的安全特性。
    • 命令执行

      • 用户可以在本地计算机上通过 SSH 连接到远程服务器并执行命令,而不需要在远程服务器的控制台前操作。例如,在管理一组服务器时,可以编写一个脚本,通过 SSH 在每台服务器上执行相同的命令,如更新软件包列表、检查服务状态等,这样可以大大提高工作效率。

OpenSSH 的作用

  • 实现 SSH 协议

    • OpenSSH 是 SSH 协议的一个开源实现。它提供了服务器端(sshd)和客户端(ssh)的软件组件,使得系统能够支持 SSH 功能。许多 Linux 和 Unix 系统默认安装了 OpenSSH,因为它是实现安全远程访问的关键工具。例如,在 Debian 或 Ubuntu 系统中,通过安装 OpenSSH - server 软件包就可以将该系统配置为一个 SSH 服务器,允许其他客户端通过 SSH 连接到这台机器。
  • 高度的安全性和可定制性

    • OpenSSH 采用了先进的加密算法,如 RSA、DSA、ECDSA 等密钥认证方式,确保连接的安全性。它还允许管理员进行详细的配置,如设置允许登录的用户、限制访问的 IP 地址、指定端口号等。例如,通过修改 sshd_config 文件,可以禁止 root 用户直接使用密码登录,而要求使用密钥认证,这样可以大大增强系统的安全性。
  • 跨平台支持

    • OpenSSH 可以在多种操作系统上运行,包括 Linux、Unix、macOS 以及 Windows(通过一些第三方工具如 Cygwin 或者 Windows Subsystem for Linux)。这使得它成为在不同操作系统环境之间进行安全通信和管理的理想选择。例如,一个开发团队可能同时使用 Linux 服务器进行后端开发和 Windows 桌面进行前端开发,OpenSSH 可以让他们方便地在两种环境之间进行交互。

实例:第三方工具连接虚拟机

首先需要满足虚拟机能够和主机相互通讯

这里以tabby为例子

image-20250107173027988

image-20250107173141655

test-vmssh 代表当前会话名称

Host : 代表虚拟机IP地址

username : 连接用户机的用户

image-20250107173248412

ssh配置文件详解

[root@master-server20 ~]# cat  /etc/ssh/sshd_config  | grep -v  ^# |  grep -v  ^$
Port 22   #默认段口号是22 可以修改为其他
ListenAddress 0.0.0.0  #允许所有人连接
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
SyslogFacility AUTHPRIV
LoginGraceTime 2m  #连接时间为两分钟
PermitRootLogin yes  #允许root用户可以登陆
StrictModes yes      
MaxAuthTries 6       #最多尝试6次连接
MaxSessions 10       #最多开启10个会话
AuthorizedKeysFile	.ssh/authorized_keys
PasswordAuthentication yes  #允许使用密码进行登陆
ChallengeResponseAuthentication no
GSSAPIAuthentication yes
GSSAPICleanupCredentials no
UsePAM yes
X11Forwarding yes
UsePrivilegeSeparation sandbox		# Default for new installations.
UseDNS no         #不进行dns解析和缓存
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS
Subsystem	sftp	/usr/libexec/openssh/sftp-server

这里重要的地方是 UseDNS no 这个选项,默认情况下我们更改完配置文件正确但是连接不上服务器就是这个选项导致

image-20250107173611339

实例二远程连接其他服务器

我们使用20 ssh连接到10上面

image-20250107173856346

这里注意开启允许root登录的选项才可以

root@192.168.1.10 前者代表要登录的用户后者代表要连接的服务器地址

这里不推荐使用root进行登录,可以使用普通用户进行登录

实例三: scp命令使用

scp 可以从远程服务器的文件拷贝到本机 也可以从本机拷贝给其他服务器

image-20250108104141100

这里需要注意如果是拷贝是目录的情况下需要使用 scp -r

将本机文件远程拷贝给远程服务器

image-20250108104415038

image-20250108104447385

实例四:免密登录

生成公钥和私钥

image-20250108105636985

将自己的公钥发送给对方

image-20250108105922090


在使用远程访问尝试还不需要使用密码进行登录

image-20250108110021025

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐