SSH常用功能介绍-高级功能

news2024/12/26 23:50:00

一、介绍

SSH(Secure Shell)是一种用于远程登录和执行命令的网络协议,它提供了加密的连接,保证了数据的安全性。除了基本的远程登录功能外,SSH还提供了许多高级功能,以下是一些常用的高级功能介绍:

  1. 端口转发(Port Forwarding):通过SSH可以进行端口转发,将本地机器上的端口映射到远程机器上,或者将远程机器上的端口映射到本地机器上。这样可以实现在不直接访问远程机器的情况下,访问远程机器上的服务。

  2. 密钥认证(Key Authentication):SSH支持密钥认证,可以使用密钥替代密码进行身份验证。这种方式更加安全,且无需每次输入密码,提高了登录的便利性。

  3. 多重认证(Multi-Factor Authentication):SSH支持多重认证,可以结合密码、密钥、安全令牌等多种方式进行身份验证,增加了登录的安全性。

  4. 文件传输(File Transfer):使用SSH可以进行文件传输,可以通过SCP(Secure Copy)或SFTP(Secure File Transfer Protocol)实现文件的上传和下载。

  5. X11转发(X11 Forwarding):SSH支持X11转发,可以在远程机器上运行图形化界面的应用程序,并将图形界面显示在本地机器上。

  6. 隧道(Tunneling):SSH支持隧道功能,可以在SSH连接中建立加密通道,将其他协议(如HTTP、FTP等)的流量通过SSH连接传输,提高数据的安全性。

  7. 代理(Proxy):SSH可以将本地机器上的端口设置为代理,将远程机器上的流量路由到本地机器上,实现代理功能。

  8. 远程命令执行(Remote Command Execution):SSH可以远程执行命令,在远程机器上执行命令并返回结果。

这些都是SSH的高级功能,可以根据实际需求选择使用。

二、端口转发

端口转发是SSH的一个常用高级功能,可以将本地机器上的端口映射到远程机器上,或者将远程机器上的端口映射到本地机器上。以下是实现端口转发的方法:

  1. 本地端口转发(Local Port Forwarding):通过本地端口转发,可以将本地机器上的端口映射到远程机器上。在本地机器上执行以下命令:

    ssh -L <本地端口>:<目标地址>:<目标端口> <用户名>@<远程机器地址>
    

    例如,将本地机器上的8080端口映射到远程机器的192.168.0.100上的80端口:

    ssh -L 8080:192.168.0.100:80 username@remote.example.com
    

    这样,在本地访问http://localhost:8080就可以访问远程机器上的80端口。

  2. 远程端口转发(Remote Port Forwarding):通过远程端口转发,可以将远程机器上的端口映射到本地机器上。在本地机器上执行以下命令:

    ssh -R <远程端口>:<目标地址>:<目标端口> <用户名>@<远程机器地址>
    

    例如,将远程机器上的80端口映射到本地机器的8080端口:

    ssh -R 8080:localhost:80 username@remote.example.com
    

    这样,在远程机器上访问http://localhost:8080就可以访问本地机器上的80端口。

  3. 动态端口转发(Dynamic Port Forwarding):通过动态端口转发,可以将本地机器上的端口作为代理端口,将流量路由到远程机器上。在本地机器上执行以下命令:

    ssh -D <本地端口> <用户名>@<远程机器地址>
    

    例如,将本地机器上的1080端口作为代理端口:

    ssh -D 1080 username@remote.example.com
    

    然后可以在浏览器中配置代理,将流量路由到本地机器上的1080端口,实现代理功能。

使用端口转发功能可以实现很多应用场景,如远程访问内网服务、通过SSH代理访问互联网等。根据实际需求选择合适的端口转发方式。

三、密钥认证

密钥认证是SSH的一个常用高级功能,通过使用密钥对进行认证,可以实现免密码登录。以下是密钥认证的实现方法:

  1. 生成密钥对:在本地机器上生成密钥对,包括公钥和私钥。使用以下命令生成密钥对:

    ssh-keygen -t rsa
    

    该命令将生成一对RSA密钥对,默认会保存在~/.ssh目录下,公钥文件为id_rsa.pub,私钥文件为id_rsa

  2. 将公钥复制到远程机器:将生成的公钥复制到需要登录的远程机器上。使用以下命令将公钥复制到远程机器:

    ssh-copy-id <用户名>@<远程机器地址>
    

    例如,复制公钥到远程机器上的用户user

    ssh-copy-id user@remote.example.com
    

    这将会将公钥追加到远程机器上的~/.ssh/authorized_keys文件中。

  3. 进行密钥认证登录:完成上述步骤后,即可通过使用私钥进行密钥认证登录。使用以下命令进行登录:

    ssh -i <私钥文件> <用户名>@<远程机器地址>
    

    例如,使用私钥文件id_rsa登录远程机器:

    ssh -i ~/.ssh/id_rsa user@remote.example.com
    

    此时将不再需要输入密码,直接使用密钥进行登录。

使用密钥认证可以提高安全性,并方便快捷地进行SSH登录操作。注意保护好私钥文件,避免泄露。

三、多重认证

多重认证是SSH的一个常用高级功能,它可以增强SSH的安全性,通过多个验证步骤来进行身份验证。以下是实现多重认证的方法:

  1. 密码认证:密码认证是SSH的默认认证方式,用户需要输入正确的用户名和密码来进行身份验证。使用以下命令进行登录:

    ssh <用户名>@<远程机器地址>
    
  2. 公钥认证:公钥认证使用密钥对进行身份验证。参考前面提到的密钥认证的实现方法,生成密钥对并将公钥复制到远程机器上。

  3. 双因素认证:双因素认证要求用户在登录时同时提供密码和一次性验证码。可以使用Google Authenticator等工具生成动态验证码。需要在远程机器上进行配置,具体的步骤可以参考相关文档。

  4. 使用配置文件:可以使用SSH的配置文件进行多重认证的配置。在~/.ssh目录下创建一个config文件,指定每个远程机器的认证方式和相关信息。示例如下:

    Host remote1.example.com
        AuthenticationMethods publickey,password
        PubkeyAuthentication yes
        PasswordAuthentication yes
    
    Host remote2.example.com
        AuthenticationMethods publickey,keyboard-interactive
        PubkeyAuthentication yes
        KbdInteractiveAuthentication yes
    
  5. 使用SSH代理:SSH代理是一个中间人,用于在用户和远程机器之间进行身份验证。通过在本地机器上运行SSH代理,用户可以通过代理访问远程机器,从而实现多重认证。

这些方法可以根据需要进行组合和配置,实现多重认证的目的。多重认证可以提高SSH的安全性,增加身份验证的复杂度,保护远程机器的访问权限。

四、文件传输

SSH是一种安全的远程连接协议,除了远程登录和执行命令外,还可以通过SSH进行文件传输。以下是SSH文件传输的实现方法:

  1. SCP:SCP(Secure Copy)是SSH的一个内置命令,用于在本地和远程机器之间进行文件传输。使用以下命令将本地文件复制到远程机器上:

    scp <本地文件路径> <用户名>@<远程机器地址>:<目标路径>
    

    使用以下命令将远程文件复制到本地机器上:

    scp <用户名>@<远程机器地址>:<远程文件路径> <本地目标路径>
    
  2. SFTP:SFTP(SSH File Transfer Protocol)是一种通过SSH进行文件传输的协议,它提供了更多的功能和操作选项。可以使用SFTP客户端工具(如WinSCP、FileZilla等)来进行文件传输。通过使用SFTP客户端,您可以在本地和远程机器之间进行双向文件传输、浏览远程文件系统、创建和删除目录等操作。

  3. rsync over SSH:rsync是一种强大的文件同步工具,可以在本地和远程机器之间进行文件传输和同步。通过结合SSH,可以在SSH连接上使用rsync进行文件传输。使用以下命令将本地文件同步到远程机器上:

    rsync -avz -e "ssh" <本地文件路径> <用户名>@<远程机器地址>:<目标路径>
    

这些方法都是使用SSH协议进行文件传输的常用高级功能。根据实际需求选择合适的方法来进行文件传输,保证传输过程的安全性和稳定性。

五、X11转发

SSH的X11转发功能可以让您在远程服务器上运行图形化应用程序,并将其显示在本地计算机上。以下是SSH X11转发的实现方法:

  1. 通过命令行启用X11转发: 在使用SSH连接到远程服务器时,可以通过在ssh命令后添加 -X-Y 参数来启用X11转发。例如:

    ssh -X <用户名>@<远程机器地址>
    

    或者

    ssh -Y <用户名>@<远程机器地址>
    

    -X 参数启用基本的X11转发功能,而-Y 参数启用更安全的X11转发方式。

  2. 配置SSH客户端: 如果您希望永久启用X11转发功能,可以在SSH客户端的配置文件中进行配置。在/etc/ssh/ssh_config(系统范围)或~/.ssh/config(用户范围)文件中添加以下配置:

    ForwardX11 yes
    ForwardX11Trusted yes
    

    保存文件后,重新连接到远程服务器即可启用X11转发。

  3. 测试X11转发: 连接到远程服务器后,可以尝试在远程机器上运行图形化应用程序,例如xeyesgedit。这些应用程序的窗口将显示在本地计算机上。

请注意,要在本地计算机上显示远程应用程序的窗口,您需要在本地计算机上安装X服务器软件。对于Linux系统,通常情况下已经安装了X服务器。对于Windows系统,您可以安装Xming或Cygwin/X等X服务器软件。

通过X11转发,您可以方便地在远程服务器上运行图形化应用程序并在本地计算机上显示,同时保持数据传输的安全性。

六、隧道

SSH隧道(SSH Tunneling)是一种通过SSH协议在公共网络上创建安全通道的方法,用于传输各种网络流量。以下是SSH隧道的实现方法:

  1. 本地端口转发: 本地端口转发是将本地计算机上的某个端口的连接转发到远程服务器上的另一个端口。可以通过以下命令实现:

    ssh -L <本地端口>:<目标地址>:<目标端口> <用户名>@<远程服务器地址>
    

    例如,要将本地计算机上的本地端口5000转发到远程服务器上的127.0.0.1的端口80,可以使用以下命令:

    ssh -L 5000:127.0.0.1:80 <用户名>@<远程服务器地址>
    
  2. 远程端口转发: 远程端口转发是将远程服务器上的某个端口的连接转发到本地计算机上的另一个端口。可以通过以下命令实现:

    ssh -R <远程端口>:<目标地址>:<目标端口> <用户名>@<远程服务器地址>
    

    例如,要将远程服务器上的远程端口5000转发到本地计算机上的127.0.0.1的端口80,可以使用以下命令:

    ssh -R 5000:127.0.0.1:80 <用户名>@<远程服务器地址>
    
  3. 动态端口转发: 动态端口转发可将本地计算机上的某个端口作为 SOCKS 代理服务器,并通过远程服务器转发所有的网络流量。可以通过以下命令实现:

    ssh -D <本地端口> <用户名>@<远程服务器地址>
    

    例如,要将本地计算机上的本地端口1080作为SOCKS代理服务器,可以使用以下命令:

    ssh -D 1080 <用户名>@<远程服务器地址>
    

通过SSH隧道,您可以安全地传输各种网络流量,并将其转发到不同的目标地址和端口。这种方法通常用于加密和保护敏感数据的传输。

七、代理

SSH代理(SSH Proxy)是一种通过SSH协议来实现代理服务的方法,可以将本地计算机上的网络请求通过远程服务器进行转发和处理。以下是SSH代理的实现方法:

  1. 本地端口转发为HTTP代理: 通过SSH本地端口转发,可以将本地计算机上的某个端口作为HTTP代理服务器,将HTTP请求转发到远程服务器。可以通过以下命令实现:

    ssh -L <本地端口>:<目标地址>:<目标端口> <用户名>@<远程服务器地址>
    

    例如,要将本地计算机上的本地端口8080作为HTTP代理服务器,将HTTP请求转发到远程服务器的127.0.0.1的端口8888,可以使用以下命令:

    ssh -L 8080:127.0.0.1:8888 <用户名>@<远程服务器地址>
    
  2. 动态端口转发为SOCKS代理: 通过SSH动态端口转发,可以将本地计算机上的某个端口作为SOCKS代理服务器,将所有的网络请求都通过远程服务器进行转发。可以通过以下命令实现:

    ssh -D <本地端口> <用户名>@<远程服务器地址>
    

    例如,要将本地计算机上的本地端口1080作为SOCKS代理服务器,可以使用以下命令:

    ssh -D 1080 <用户名>@<远程服务器地址>
    

通过SSH代理,您可以在本地计算机上设置代理服务器,从而通过远程服务器进行网络请求,并实现代理功能,如访问被屏蔽的网站或隐藏真实IP地址等。请注意,使用SSH代理时,请确保您具有合法的使用权限,并遵守相关法律法规。

八、远程命令执行

SSH远程命令执行是SSH的一个常用高级功能,可以通过SSH连接远程服务器并执行命令。以下是SSH远程命令执行的实现方法:

  1. 使用ssh命令执行单个命令: 可以使用ssh命令来直接执行远程服务器上的单个命令。可以通过以下命令实现:

    ssh <用户名>@<远程服务器地址> "<命令>"
    

    例如,要在远程服务器上执行"ls -l"命令,可以使用以下命令:

    ssh username@remote-server "ls -l"
    
  2. 使用ssh命令执行多个命令: 如果需要执行多个命令,可以将多个命令组合成一个脚本,并通过ssh命令来执行该脚本。可以通过以下命令实现:

    ssh <用户名>@<远程服务器地址> "<脚本>"
    

    例如,要在远程服务器上执行多个命令,可以创建一个shell脚本如下:

    #!/bin/bash
    echo "Hello World!"
    ls -l
    

    然后使用以下命令执行该脚本:

    ssh username@remote-server "bash -s" < script.sh
    

通过SSH远程命令执行,你可以方便地在本地计算机上通过SSH连接远程服务器并执行命令,进行远程管理和操作。请注意,执行远程命令时,请确保你具有合法的使用权限,并遵守相关法律法规。

##欢迎关注交流,开发逆商潜力,提升个人反弹力:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1670092.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

26版SPSS操作教程(高级教程第二十章)

目录 前言 粉丝及官方意见说明 第二十章一些学习笔记 第二十章一些操作方法 神经网络与支持向量机 人工神经网络&#xff08;artificial neural network&#xff0c;ANN&#xff09; 假设数据 具体操作 结果解释 对案例的进一步分析 结果解释 ​编辑 尝试将模型复…

mmdetection在训练自己数据集时候 报错‘ValueError: need at least one array to concatenate’

问题&#xff1a; mmdetection在训练自己数据集时候 报错‘ValueError: need at least one array to concatenate’ 解决方法&#xff1a; 需要修改数据集加载的代码文件&#xff0c;数据集文件在路径configs/base/datasets/coco_detection.py里面&#xff0c;需要增加meta…

水经微图万能版、专业版与企业版的区别?

水经微图&#xff08;以下简称“微图”&#xff09;的版本&#xff0c;主要分为万能版、专业版和企业版三个版本。 什么是万能版&#xff1f; 万能版是指“水经注万能地图下载器”软件功能的授权&#xff0c;虽然该软件已经停止更新&#xff0c;但购买过该软件的用户&#xf…

简单的DbUtils工具类【精细】

目录 单条通用增删改方法 1.创建maven项目&#xff0c;并加载依赖 2.创建数据库连接工具类(Dbutils类) 3.创建一个执行器(SqlExecutor类) 4.通用(增&#xff0c;删&#xff0c;改)方法 1.创建方法 2.创建userInfo实体类 3.创建测试类&#xff0c;测试增&#xff0c;删&#xf…

leetcode-最长公共子序列(二)-103

题目要求 思路 step 1&#xff1a;优先检查特殊情况。 step 2&#xff1a;获取最长公共子序列的长度可以使用动态规划&#xff0c;我们以dp[i][j]dp[i][j]dp[i][j]表示在s1中以iii结尾&#xff0c;s2中以jjj结尾的字符串的最长公共子序列长度。 step 3&#xff1a;遍历两个字…

C++——缺省参数与重载函数

目录 ​前言 一.缺省参数 1.1缺省参数概念 1.2缺省参数分类 注意事项&#xff1a; 二.函数重载 2.1函数重载概念 2.2c支持函数重载原理——命名修饰 前言 本篇文章主要讲述c中有关于缺少参数与函数重载的相关概念与实例&#xff0c;以下是本人拙见&#xff0c;如有错误…

文件夹重命名高效批量技巧:轻松实现在文件夹名称左边添加关键字

在日常工作和生活中&#xff0c;我们经常需要对大量的文件夹进行重命名&#xff0c;以便更好地组织和管理文件。然而&#xff0c;手动一个接一个地修改文件夹名称既费时又费力。幸运的是&#xff0c;有一些高效的批量重命名技巧可以帮助我们快速实现这一目标&#xff0c;特别是…

算法学习笔记(3)-差分

#差分 差分和前缀和互为逆运算&#xff1a; 给定一个原数组s&#xff0c;差分数组h&#xff0c;两者的关系如下所示&#xff1a; s[i] h[1] h[2] h[3] …… h[i] 针对于上面的公式&#xff0c;由差分数组h推导而来 h[1] s[1] h[2] s[2] - s[1] h[3] s[3] - [2] …… h[…

vue前端时间段选择控件

实现效果: 可选具体的某天的某时某分某秒 vue前端代码: <el-form-item label"日期"><el-date-pickerv-model"daterangerq"style"width: 240px"value-format"yyyy-MM-dd HH:mm:ss"type"datetimerange"range-separat…

Spring,SpringMVC,SpringBoot知识总结

1.简述Spring,SpringMVC&#xff0c;SpringBoot各自特点及联系 Spring、Spring MVC 和 Spring Boot 是 Java 开发中常用的三个框架&#xff0c;它们之间有以下关系&#xff1a; Spring&#xff1a;是一个全功能的 JavaEE 应用程序框架。它提供了一系列的解决方案&#xff0c…

【管理咨询宝藏99】离散制造智能工厂战略规划方案

本报告首发于公号“管理咨询宝藏”&#xff0c;如需阅读完整版报告内容&#xff0c;请查阅公号“管理咨询宝藏”。 【管理咨询宝藏99】离散制造智能工厂战略规划方案 【格式】PDF版本 【关键词】智能制造、先进制造业转型、数字化转型 【核心观点】 - 推进EHS、品质一致性、生…

通配符证书260元

通配符SSL证书是一种特殊的数字证书&#xff0c;可以保护域名以及该域名下的所有子域名。不论是个人开发者还是企业开发者&#xff0c;只需要购买一个通配符SSL证书&#xff0c;就可以为多个子域名提供传输数据加密服务&#xff0c;降低了多子域名网站开发者购买SSL证书的成本。…

ArcGIS水文水环境数据编辑、管理、处理与分析;ArcGIS水文分析及流域特征提取;湖泊水库水环境监测及评价;河道水污染预测与水环境容量计算等案例实践

目录 专题一 ArcGIS&#xff1a;数据管理 专题二 ArcGIS&#xff1a;数据转换 专题三 ArcGIS&#xff1a;地图制作 专题四 水文水环境数据编辑与管理 专题五 水文水环境数据处理与分析 专题六 ArcGIS水文分析及流域特征提取 专题七 湖泊水库水环境监测及评价 专题八 河…

redis服务连接及常规操作和redis服务getshell

简介 Redis&#xff0c;英文全称是Remote Dictionary Server&#xff08;远程字典服务&#xff09;&#xff0c;是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库&#xff0c;并提供多种语言的API。 redis服务于传统服务器不同&…

flink尚硅谷

flink 1 flink基础使用1.1 角色1.2 部署模式&#xff08;抽象&#xff09;1.2.1 会话模式1.2.2 单作业模式1.2.3 应用模式 1.3 运行模式&#xff08;实际 谁来管理资源&#xff09;1.3.1 Stand alone1.3.2 YARN运行模式&#xff08;重点&#xff09; 2. 运行时架构2.1 系统架构…

程序员如何避免35岁危机?

所谓的“35岁危机”通常是指在职业生涯中遇到的一个挑战阶段&#xff0c;这个概念在不同行业和个人中有不同的体现。对于程序员来说&#xff0c;这可能与技术更新迅速、工作强度大、职业发展路径的不确定性等因素有关。 以下是一些建议&#xff0c;帮助程序员避免或缓解这一危机…

三丰云免费虚拟主机与免费云服务器评测

三丰云是一家知名的云计算服务提供商&#xff0c;提供免费虚拟主机和免费云服务器的服务。今天我们就来为大家介绍一下三丰云的免费虚拟主机和免费云服务器的使用体验。首先&#xff0c;让我们来看看三丰云的免费虚拟主机服务。三丰云的免费虚拟主机提供了稳定可靠的空间和带宽…

智能优化算法 | Matlab实现KOA开普勒优化算法(内含完整源码)

智能优化算法 | Matlab实现KOA开普勒优化算法(内含完整源码) 文章目录 智能优化算法 | Matlab实现KOA开普勒优化算法(内含完整源码)文章概述源码设计文章概述 智能优化算法 | Matlab实现KOA开普勒优化算法(内含完整源码) 源码设计 %% clear all clc N=25; % Number of s…

【Java】:方法重写、动态绑定和多态

目录 一个生动形象的例子 场景设定 1. 方法重写&#xff08;Method Overriding&#xff09; 2. 动态绑定&#xff08;Dynamic Binding&#xff09; 3. 多态&#xff08;Polymorphism&#xff09; 归纳关系&#xff1a; 重写 概念 条件 重写的示例 重载与重写的区别 …

【必看】Spring系列面试题

Spring Core Container, AOP, Data Access, Web... 基础 1. 简单介绍Spring 一款开源的轻量级 Java 开发框架&#xff0c;旨在提高开发人员的开发效率以及系统的可维护性。Spring 支持 IoC&#xff08;Inversion of Control:控制反转&#xff09; 和 AOP(Aspect-Oriented Pro…