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.comAuthenticationMethods publickey,passwordPubkeyAuthentication yesPasswordAuthentication yesHost remote2.example.comAuthenticationMethods publickey,keyboard-interactivePubkeyAuthentication yesKbdInteractiveAuthentication 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.mzph.cn/news/836830.shtml

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

相关文章

什么是 RAG,大模型微调,向量数据库的应用场景

原来向量数据库的应用场景是这样的&#xff01;按照我的理解&#xff0c;大模型其实是没有学习能力的&#xff0c;它就相当于一个真值表或者矩阵&#xff0c;给它输入&#xff0c;它就输出&#xff0c;在使用它的过程中它不会自己训练自己&#xff0c;改变既有的参数&#xff0…

3W 3KVAC隔离 宽电压输入 AC/DC 电源模块——TP03AL系列

TP03AL系列产品具有交直流两用、输入电压范围宽、高可靠性、低功耗、安全隔离等优点。广泛适用于工控和电力仪器仪表、智能家居等对体积要求苛刻、并对EMC 要求不高的场合&#xff0c;如果需要应用于电磁兼容恶劣的环境下必须添加EMC 外围电路。

栈结构(详解)

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

立聪堂助听器29周年暨第九届助听使者活动圆满落幕

5月10日对于立聪堂来说是个特别的日子&#xff0c;这家专注于听力健康领域的公司迎来了29周年。同时&#xff0c;立聪堂第九届助听使者代表及其家人也受邀参观立聪堂南京总部&#xff0c;共庆29周年。 易被忽视的老人听力健康 大数据显示&#xff0c;我国65岁以上老人&#x…

SQLZOO:The JOIN operation

数据表&#xff1a;game-gaol-eteam game idmdatestadiumteam1team210018 June 2012National Stadium, WarsawPOLGRE10028 June 2012Stadion Miejski (Wroclaw)RUSCZE100312 June 2012Stadion Miejski (Wroclaw)GRECZE100412 June 2012National Stadium, WarsawPOLRUS... goal …

【重装系统】U盘制作软件——Rufus

Rufus 是一款格式化和创建 USB 启动盘的辅助工具。 本软件适用于以下场景&#xff1a; 需要将可引导 ISO (Windows、Linux、UEFI 等) 刻录到 USB 安装媒介的情况 需要处理未安装操作系统的设备的情况 需要在 DOS 环境下刷写 BIOS 或其他固件的情况 需要运行低级工具的情况 官…

WebSocket建立网络连接——小案例

WebSocket是一种实现全双工通信的网络技术标准&#xff0c;它允许在用户的浏览器和服务器之间进行持久的、双向的通信。以下是对WebSocket的具体介绍&#xff1a; 实时性&#xff1a;与传统HTTP请求相比&#xff0c;WebSocket提供了更高效的实时数据交换方式。一旦建立连接&am…

数据可视化(九):Pandas北京租房数据分析——房源特征绘图、箱线图、动态可视化等高级操作

Tips&#xff1a;"分享是快乐的源泉&#x1f4a7;&#xff0c;在我的博客里&#xff0c;不仅有知识的海洋&#x1f30a;&#xff0c;还有满满的正能量加持&#x1f4aa;&#xff0c;快来和我一起分享这份快乐吧&#x1f60a;&#xff01; 喜欢我的博客的话&#xff0c;记得…

【Golang】基于 excelize 的 Excel 工具包

目录 1. 安装excelize库2. Excel工具代码2.1 初始化Excel对象2.2. 常用操作2.2.1 设置窗格冻结2.2.2 设置工作表名称2.2.3 创建工作表2.2.4 设置单元格值2.2.5 设置单元格样式2.2.6 合并单元格2.2.7 设置行高和列宽 3.使用示例4.完整代码5.总结 在日常的开发中&#xff0c;我们…

操作抖音小店亏钱?是哪方面导致的?赶紧自查!

大家好&#xff0c;我是电商小V 我也经常去浏览网上的一些帖子&#xff0c;一些帖子就是说开抖音小店运营一年多了不出单&#xff0c;不转化&#xff0c;还亏钱&#xff0c;做不起来&#xff0c;很多人来问我&#xff0c;做抖音小店是不是不能赚钱&#xff1f; 关于这个问题&am…

04、 .java程序用 editplus 工具打开的过程及在 editplus 工具中配置 java/javac 命令的过程

EditPlus 工具的使用&#xff1a; 1、安装 editplus 工具的过程&#xff1a;其一、安装包地址&#xff1a;其二、安装步骤&#xff1a; 2、使用 editplus 工具打开 .java 程序的过程&#xff1a;其一、修改默认打开 .java 的工具&#xff1a;其二、效果展示&#xff1a; 3、在 …

安全测试工具BurpSuite安装和使用

1.安装 下载地址&#xff1a;https://pan.baidu.com/s/1YJbZGAfVKLsQmNeZYZXEeQ 提取码: yyds 打开cmd&#xff0c;运行以下指令&#xff0c;打开keygen界面&#xff1a; java -jar "C:\soft\BurpSuite v2.1\burp-loader-keygen-2.jar" 点击Run按钮&#xff0c;弹…

flash attention的CUDA实现探讨-V3

之前关于flash attention的实现参考添加链接描述,添加链接描述,添加链接描述 lash attention的数学变换:给定三个矩阵Q,K,V,形状都是[N,d],计算S=QK.T,然后针对dim=1做softmax,然后和V继续做矩阵乘法得到形状为[N,d]的输出矩阵O,即O=softmax(QK.T,dim=1)V。 下面本人的…

01-02-1

1、day10作业 使用的代码 #include<stdio.h> void change(int* i) {*i(*i) / 2; } int main() {int i 0;scanf("%d", &i);change(&i);printf("%d", i);return 0; } ​ ​ 2、day11作业 使用的代码 #include<stdio.h> #include<…

Kubernetes学习-集群搭建篇(二) 部署Node服务,启动JNI网络插件

&#x1f3f7;️个人主页&#xff1a;牵着猫散步的鼠鼠 &#x1f3f7;️系列专栏&#xff1a;Kubernetes渐进式学习-专栏 &#x1f3f7;️个人学习笔记&#xff0c;若有缺误&#xff0c;欢迎评论区指正 目录 1. 前言 2. 部署Node服务 2.1. 前置环境安装 2.2. 将Node服务加…

【java9】java9新特性概述

经过4次的跳票&#xff0c;历经曲折的Java9最终在2017年9月21日发布。因为里面加入的模块化系统&#xff0c;在最初设想的时候并没有想过那么复杂&#xff0c;花费的时间超出预估时间。距离java8大约三年时间。 Java9提供了超过150项新功能特性&#xff0c;包括备受期待的模块…

MySQL基础入门【mysql初识 | 数据库操作 | 表操作 | sql数据类型】

博客主页&#xff1a;花果山~程序猿-CSDN博客 文章分栏&#xff1a;Linux_花果山~程序猿的博客-CSDN博客 关注我一起学习&#xff0c;一起进步&#xff0c;一起探索编程的无限可能吧&#xff01;让我们一起努力&#xff0c;一起成长&#xff01; 目录 一&#xff0c;为什么会有…

【鸿蒙+全国产瑞芯微】智慧楼宇解决方案 | 如何实现多场景下智慧化、精细化楼宇管理?

随着数字化、智能化与工作生活的联结日渐紧密&#xff0c;聚焦人性化服务&#xff0c;以数字和科技匹配多重需求&#xff0c;加速商业楼宇智能化转型的脚步&#xff0c;逐步形成智慧楼宇产品矩阵。 方案亮点 01/数字标牌——形象展示 企业文化宣传、公告通知等 播放内容统一远…

uni-app跨端兼容

1.样式兼容 小程序端不支持*选择器&#xff0c;可以使用&#xff08;view,text&#xff09; 页面视口差异(tabar页、普通页) H5端默认开始scoped 例如骨架屏样式出现问题&#xff0c;需要将之前的样式拷贝到骨架屏中 提示&#xff1a;H5端是单页面应用&#xff0c;scoped隔离…

轴承制造企业“数智化”突破口

轴承是当代机械设备中一种重要零部件。它的主要功能是支撑机械旋转体&#xff0c;降低其运动过程中的摩擦系数&#xff0c;并保证其回转精度。轴承是工业核心基础零部件&#xff0c;对国民经济发展和国防建设起着重要的支撑作用。 轴承企业普遍采用以销定产的经营模式&#xf…