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

一、介绍

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.mfbz.cn/a/619260.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Redis集群安装

将Redis安装包分别上传到3个文件夹&#xff0c;并解压缩 #编译并指定安装目录 cd /root/usr/local/redis-cluster/redis-7001/redis-6.2.6/ make make PREFIX/root/usr/local/redis-cluster/redis-7001 install # cd /root/usr/local/redis-cluster/redis-7002/redis-6.2.6/ m…

FreeRTOS二值信号量

目录 一、信号量的概念 1、信号量的基本概念 2、信号量的分类 二、二值信号量简介 三、二值信号量相关API 1、创建二值信号量 2、释放二值信号量 3、获取二值信号量 四、二值信号量实操 1、实验需求 2、CubeMX配置 3、代码实现 一、信号量的概念 1、信号量的基本概…

使用 CloudFlare 后如何才能不影响搜索引擎蜘蛛爬虫

今天,明月给大家再次详细讲解一下,明月在使用 CloudFlare 后如何才能不影响搜索引擎蜘蛛爬虫对站点的抓取,因为这是很多首次使用 CloudFlare 的站长们容易忽略和触犯的问题,并不是 CloudFlare 不友好,而是 CloudFlare 的防火墙(WAF)实在是太给力。其实在【CloudFlare 如…

IDEA及Maven配置代理及Maven中央仓库配置详解

一、配置代理 首先&#xff0c;需要本地开启代理入口&#xff0c;如图。 这个跟你使用代理软件有关。像我使用的是qv2ray。 其次&#xff0c;idea配置代理&#xff0c;如图。 1.1 idea配置代理 打开Settings&#xff0c;如图 1.2 maven配置代理 maven配置代理&#xff0c;修…

2024湖南理工学院程序设计竞赛(同步赛) G. 区间递减(思维题 分类讨论 ST表)

题目 https://ac.nowcoder.com/acm/contest/82672/G 思路来源 出题人 涼風青葉7代码 题解 注意到三种情况即可&#xff0c; 第一种情况&#xff0c;10 9 8 1 2&#xff0c;保留1 第二种情况&#xff0c;6 5 10 9 4 4&#xff0c;保留5 4 4 第三种情况&#xff0c;6 5 4&…

基于Springboot的校园疫情防控管理系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的校园疫情防控管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系…

Python 整数类型(int)详解:无限范围与多种进制

引言 在编程中&#xff0c;整数是最基本的数据类型之一。不同编程语言对整数的处理方式各不相同&#xff0c;这往往影响到程序的性能和开发者的选择。本文将深入探讨 Python 中的整数类型&#xff08;int&#xff09;&#xff0c;其独特的处理方式&#xff0c;以及它在日常编程…

【数据结构】环状链表OJ题

✨✨✨专栏&#xff1a;数据结构 &#x1f9d1;‍&#x1f393;个人主页&#xff1a;SWsunlight 一、OJ 环形链表&#xff1a; 快慢指针即可解决问题: 2情况&#xff1a; 快指针走到结尾&#xff08;不是环&#xff09;快指针和尾指针相遇&#xff08;是环的&#xff09; …

C语言——文件缓冲区

一、用户缓冲区和系统缓冲区 缓冲区的概念确实可以分为多个层次&#xff0c;其中最常见的两个层次是用户缓冲区和系统缓冲区。 这里的用户缓冲区和系统缓冲区都包括输入输出缓冲区。 1、用户缓冲区&#xff08;User-space Buffer&#xff09; 用户缓冲区是指由用户程序&…

09.zabbix自定义模块并使用

zabbix自定义模块并使用 根据tcp的11中状态获取值&#xff0c;进行批量配置监控项 [rootyunlong66 ~]# cat /etc/zabbix/zabbix_agentd.d/tcp.conf UserParameterESTABLISHED,netstat -antp |grep -c ESTABLISHED UserParameterSYN_SENT,netstat -antp |grep -c SYN_SENT Use…

免费思维13招之七:空间型思维

免费思维13招之七:空间型思维 本篇给你带来的是空间型思维。 空间型思维,具体分为内部空间型思维和外部空间型思维。 什么叫内部空间型思维呢? 内部空间型就是充分利用现有空间或资源为社会提供免费服务,积累人气,增加流量,从而带动消费。 为什么你生意不好?为什么你…

银河麒麟服务器操作系统扩展磁盘容量方法(非LVM)

此方法的使用场景为&#xff1a;对普通的分区扩容&#xff0c;分区格式为xfs&#xff0c;不适用于lvm逻辑卷的扩容。 注意&#xff1a;扩展磁盘空间的操作风险较高&#xff0c;最好先做好备份&#xff0c;或在实验环境下操作成功后&#xff0c;再对目标系统进行扩容操作&#…

当代 Qt 正确的 安装方法 及 多版本切换

此文写于 20240511 首先去网站Index of /official_releases/online_installers下载一个安装器 安装器有什么用? 可以浏览安装版本 安装组件 安装器版本越能 能装的东西越多 现在只能选Qt5 和 Qt6 至于你公司用的Qt4 我也没招 见招时再拆招 安装器 默认国外源 可以换国内…

栈的讲解

栈的概念及结构 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。 进行数据插入和删除操作的一端称为栈顶&#xff0c;另一端称为栈底&#xff08;因为先进后出&#xff09;。栈中的数据元素遵守后进先出LIFO&#xff08;Last In Firs…

18 【Aseprite 作图】工具栏介绍

1 在没有输入法的情况下&#xff0c; 按住Shift 大写的N&#xff0c;就可以快速新建图层 ctrl z 撤回这个图层 2 双击图层&#xff0c;可以修改图层名称和属性 3 按住图层&#xff0c;拖动图层&#xff0c;可以把图层拉到 组&#xff0c;就可以方便一组一组管理图层 4 保存的…

Redis—图文详解高可用原因

本文不会讲解Redis的用途&#xff0c;关于用途会发另一片文章讲解&#xff0c;本文主要讲的是高可用的原理。 Redis高可用主要有以下三个原因&#xff1a;主从模式(上一篇讲Kafka的文章里有涉及到)&#xff0c;哨兵模式&#xff0c;Redis-Cluster(Redis集群)。 什么是主从模式…

消息队列——Kafka

1、什么是消息队列&#xff0c;什么是Kafka&#xff1f; 我们通常说的消息队列&#xff0c;简称MQ&#xff08;Message Queue&#xff09;&#xff0c;它其实就指消息中间件&#xff0c;比较流行的开源消息中间件有&#xff1a;Kafka、RabbitMQ、RocketMQ等。今天我们要介绍的…

基于yolov8+gradio目标检测演示系统设计

YOLOv8与Gradio&#xff1a;开启目标检测的可视化新篇章 随着人工智能技术的飞速发展&#xff0c;目标检测作为计算机视觉领域的重要分支&#xff0c;已经广泛应用于安防监控、自动驾驶、医疗影像等多个领域。而YOLO&#xff08;You Only Look Once&#xff09;系列算法作为目…

(七)SQL基础知识练习题(选择题)(上)#CDA学习打卡

本文整理了SQL基础知识相关的练习题&#xff0c;共133道&#xff0c;可作为CDA一级的补充习题&#xff0c;也适用于刚入门初级SQL想巩固基础的同学。来源&#xff1a;如荷学数据科学题库&#xff08;技术专项-SQL&#xff09;。暂时按照原题库顺序present&#xff0c;如有需要之…

网安面经之文件包含漏洞

一、文件包含漏洞 1、文件包含漏洞原理&#xff1f;危害&#xff1f;修复&#xff1f; 原理&#xff1a;开发⼈员⼀般希望代码更灵活&#xff0c;所以将被包含的⽂件设置为变量&#xff0c;⽤来进⾏动态调⽤&#xff0c;但是由于⽂件包含函数加载的参数没有经过过滤或者严格的…