论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
安全
›
网络安全
›
ssh 命令:全面解析ssh命令,轻松掌握远程登录与数据传 ...
ssh 命令:全面解析ssh命令,轻松掌握远程登录与数据传输安全 ...
花瓣小跑
金牌会员
|
2024-10-4 19:25:31
|
显示全部楼层
|
阅读模式
楼主
主题
858
|
帖子
858
|
积分
2574
一、命令简介
ssh 命令用于安全登录远程主机,以便在远程机上实行命令或传输数据。
例如登录远程主机 169.10.222.23 上的 soulio 用户:
ssh soulio@169.10.222.23
复制代码
示例直接参考第三章。
相识配景知识:ssh 加密
1. 加密范例
对称加密
: 在数据传输过程中使用相同的密钥进行加密和解密。常见的对称加密算法包括 AES(高级加密尺度)、Blowfish 和 3DES(Triple Data Encryption Standard)。
非对称加密
: 使用一对密钥(公钥和私钥)来加密和解密数据。公钥可以公开,而私钥则应保密。常见的非对称加密算法包括 RSA 和 DSA。
哈希函数
: 用于确保数据完备性,防止数据在传输过程中被篡改。常见的哈希算法包括 SHA-256 和 SHA-1。
2. SSH 加密过程
密钥互换
: 在连接开始时,客户端和服务器通过非对称加密互换公钥,以安全地天生共享的会话密钥。
会话密钥天生
: 一旦密钥互换乐成,两边天生一个对称的会话密钥,后续的通讯将使用这个会话密钥进行加密。
数据加密
: 使用会话密钥加密所有发送的数据,包括命令、输出和文件传输。
数据完备性查抄
: 在传输过程中,SSH 使用哈希函数确保数据的完备性,防止数据被篡改。
3. SSH 密钥管理
密钥对天生
: 用户可以使用 ssh-keygen
工具天生 SSH 密钥对(公钥和私钥)。
公钥分发
: 将公钥添加到远程主机的 ~/.ssh/authorized_keys 文件中,以便通过私钥进行身份验证。
私钥安全性
: 私钥应妥善保管,通常加密存储,并在使用时输入密码。
4. SSH 加密的长处
安全性高
: SSH 加密保护了数据传输过程中的机密性和完备性,防止窃听和数据篡改。
身份验证
: SSH 支持多种身份验证方式,包括密码、密钥对和基于证书的认证,提供了灵活的安全选项。
远程管理
: SSH 使得系统管理员能够安全地管理远程服务器,实行命令和文件传输。
5. 总结
SSH 加密是保护远程连接和数据传输的关键技术,广泛应用于网络管理和安全通讯。通过对称和非对称加密、密钥互换和数据完备性查抄,SSH 确保了用户在使用网络时的数据安全。
除了 ssh 命令外,stfp 和 scp 这两个文件传输命令也建议在 SSH 加密之上。
二、命令参数
命令格式
ssh [选项] [用户名@]主机名或IP地址 [命令]
复制代码
常用参数
-p port: 指定连接的端标语,默认是 22。
-i identity_file: 指定私钥文件用于身份验证。
-v: 启用具体模式,显示连接过程中的调试信息。
-X: 启用 X11 转发,以便在本地显示远程 GUI 应用步伐。
-C: 启用压缩,提高传输速度。
选项太多,这里仅做收集,方便用时查阅。此刻的你不消记,甚至不消看。
更多选项
-p: 指定端口(例如:ssh -p 2222 user@example.com
)。
-i: 指定私钥文件(例如:ssh -i /path/to/private/key user@example.com)。
-l: 指定登录用户名(例如:ssh -l user example.com)。
-o: 指定自定义 SSH 选项(例如:ssh -o "OptionName Value" user@example.com)。
-4: 欺压使用 IPv4 地址(例如:ssh -4 user@example.com)。
-6: 欺压使用 IPv6 地址(例如:ssh -6 user@2001:db8::1)。
-C: 启用压缩(例如:ssh -C user@example.com)。
-c: 指定加密算法(例如:ssh -c blowfish,user@example.com)。
-D: 动态端口转发(例如:ssh -D 1080 user@example.com
)。
-L: 本地端口转发(例如:ssh -L 8080:localhost:80 user@example.com)。
-R: 远程端口转发(例如:ssh -R 8080:localhost:80 user@example.com)。
-N: 不实行远程命令,用于端口转发(例如:ssh -N -L 8080:localhost:80 user@example.com)。
-f: 配景实行(例如:ssh -f -L 8080:localhost:80 user@example.com)。
-g: 允许远程主机连接到转发的端口(例如:ssh -g -L 8080:localhost:80 user@example.com)。
-T: 禁用伪终端分配(例如:ssh -T user@example.com)。
-t: 分配伪终端(例如:ssh -t user@example.com)。
-v: 具体模式(例如:ssh -v user@example.com)。
-X: 启用 X11 转发(例如:ssh -X user@example.com)。
-Y: 信任的 X11 转发(例如:ssh -Y user@example.com)。
三、命令示例
1 最简单登录
1.命令格式
ssh user@example.com
复制代码
user:要登录的用户
example.com:要登录的主机,可以是一个 域名,也可以是一个 ip,还可以是一个 别名。终极都会指向某台主机。
对于未指定的信息,将会使用默认设置,好比端口使用 22
2.开始登录
登录会验证用户密码,密码验证乐成后进入远程主机的终端。
如今你可以管理这台远程主机:实行命令,传输文件等操纵。
3.退出登录
输出 exit 退出登录,将会回到本田主机的终端中。
2 指定端口登录
ssh -p 2222 user@example.com
复制代码
通常 SSH 使用默认端口 22 进行通讯,但是有些管理员可能会修改默认端标语,以避免网络攻击。如果你不知道正确的端标语,就无法与远程主机创建 SSH 连接。如果你知道正确端标语,可以使用 -p 指定,如上所示:-p 2222 指定连接远程主机的 2222 端口,而非 22 端口。
3 让远程盘算机实行一条命令
ssh user@example.com
'ls'
复制代码
必要让远程盘算机实行的命令,写在 ssh 命令的末了。通常命令实行后会有一个输出,输出会直接返回到当前终端中。这个例子将会返回在远程盘算机上实行 ls 的结果,也就是列出远程盘算机 example.com 的 user 用户的家目次列表。
4 秘钥管理
如果你经常登录某个远程主机,每次都要输密码就会显得很贫困。有没有方法,让我们不必要输入密码就可以登录远程主机?有。
方法一:使用 SSH 客户端
好比 Termius
将登录信息保存到客户端中
下次登录时,客户端会调用你的设置(用户名、主机、密码)。从而用户无需输入。
方法二:使用公钥
将本地盘算机的公钥发送远程盘算机上,下次登录就不必要输入密码。真正的免密登录。
1.天生秘钥
如果新装的系统,可能还没有天生秘钥信息,使用以下命令天生秘钥:
ssh-keygen
复制代码
中间会有两三次提示,不消管,直接按回车键。看到雷同提示就乐成了。
2.把公钥部署到远程主机
ssh-copy-id user@example.com
复制代码
user 换成你在远程主机上的用户名
example.com 换成你的远程主机,可以是域名,可以是 ip,还可以是别名。终极都会指向你的主机。
tips:如果你有多个公钥,可以在命令中加上 -i 目次 部署指定公钥。
实行命令,乐成会有雷同输出
如今登录远程主机就不会再验证密码了。
5 使用别名
例如用 armbian 作为 soulio@192.168.10.36 的别名,如许用 ssh armbian
就可以登录指定主机,输入起来更友好。
实现步骤:
第一步,修改本地 ~/.ssh/config 文件,添加主机别名:
Host armbian
HostName 192.168.10.36
User soulio
Port 22 #可选的配置
IdentityFile ~/.ssh/id_rsa #可选的配置
复制代码
第二步,使用别名登录远程主机:
ssh armbian
复制代码
6 端口转发
在 SSH 中,端口转发和代理转发是两种非常有用的功能,它们允许用户通过 SSH 会话来转发网络流量,从而绕过防火墙、访问内网资源或保护网络通讯。
SSH 端口转发是通过 SSH 通道安全地传输 TCP 流量的功能,可以分为三种范例:
本地端口转发
、
远程端口转发
和
动态端口转发
。它们分别允许将本地端口、远程端口或恣意的流量通过 SSH 通道进行转发。
本地端口转发 (远程发到本地)
本地端口转发将本地盘算机的一个端口绑定到远程服务器上的某个端口。这种方式常用于从本地访问远程服务器上的内部资源。
语法
:
ssh -L [local_port]:[remote_host]:[remote_port] [user@ssh_server]
复制代码
local_port: 本地机器上将绑定的端口。
remote_host: 远程主机地址,可以是服务器的内部 IP 或域名。
remote_port: 远程主机的端标语。
ssh_server: 用于创建 SSH 连接的服务器。
示例
:
ssh -L 8080:intranet.example.com:80 user@ssh_server.com
复制代码
这个命令将本地机器的 8080 端口与远程服务器 ssh_server.com 上的内部主机 intranet.example.com 的 80 端口相连。你可以通过在浏览器中访问 http://localhost:8080 来访问远程内网的资源。
在局域网中实验
:
ssh -L 8080:localhost:32769 soulio@192.168.10.63
复制代码
源:在 192.168.10.63:32769 上搭建 web 页面
转发:转发到本地 8080
远程端口转发 (本地发到远程)
远程端口转发允许将远程服务器上的一个端口绑定到本地盘算机或另一个远程机器的端口上,通常用于将外部网络的请求转发到本地盘算机上。
语法
:
ssh -R [remote_port]:[local_host]:[local_port] [user@ssh_server]
复制代码
remote_port: 远程服务器上的端口。
local_host: 本地盘算机的地址。
local_port: 本地机器上的端口。
示例
:
ssh -R 8080:localhost:3000 user@ssh_server.com
复制代码
此命令将远程服务器 ssh_server.com 的 8080 端口绑定到本地机器的 3000 端口。任何对 ssh_server.com:8080 的请求都会转发到你本地盘算机的 3000 端口。
设置-允许远程转发
:
编辑远程主机 sudo nano /etc/ssh/sshd_config
GatewayPorts yes
复制代码
GatewayPorts 默以为 no,不允许远程转发。必须开启。修改设置后重启 ssh 服务使其生效。
在局域网中实验
:
ssh -R 8081:localhost:16601 soulio@192.168.10.63
复制代码
源:在本地 3000 端口搭建一个 web 页面
这里源不范围于本田主机,只要是本田主机可以访问到的页面都可以,好比 192.168.10.55:16601
转发:转发到 192.168.10.63:8080
动态端口转发
动态端口转发是一种灵活的方式,它将本地机器的一个端口用作 SOCKS 代理,可以转发恣意的网络请求。这种方式允许你通过 SSH 通道代理所有网络流量,雷同于 VPN 的结果。
语法
:
ssh -D [local_port] [user@ssh_server]
复制代码
local_port: 用于 SOCKS 代理的本地端口。
示例
:
ssh -D 1080 user@ssh_server.com
复制代码
此命令将本地端口 1080 设置为 SOCKS 代理端口。你可以在浏览器或其他应用中设置 SOCKS 代理为 localhost:1080,通过 SSH 服务器转发所有网络流量。
使用体验:但欠好用。用了几分钟就开始报错,超时。建议用其他简单、稳固的工具呢。也可能是我未能掌握关键。
设置-允许动态转发
:
编辑远程主机 sudo nano /etc/ssh/sshd_config
AllowTcpForwarding yes #默认是yes
PermitTunnel yes #默认是no 改为yes
复制代码
确保这些选项被设置为 yes,然后重启 SSH 服务:
sudo systemctl restart ssh
复制代码
7 代理转发
代理转发,例如本地端口 1080
ssh -D 1080 user@example.com
复制代码
SSH 代理转发 (Agent Forwarding)
SSH 代理转发是一种允许在远程服务器上使用本地 SSH 代理功能的机制。通过代理转发,你可以在远程服务器上使用本地的 SSH 私钥进行身份验证,而不必要将私钥复制到远程服务器上。这对于通过中间跳板服务器访问更多服务器时非常有用。
工作原理
SSH 代理转发通过 SSH 代理 (ssh-agent) 进程,将本地机器的 SSH 代理功能转发到远程服务器。如许,远程服务器上的应用步伐可以通过本地 SSH 代理进行密钥认证,而不会袒露私钥。
使用方式
使用 -A 选项启用 SSH 代理转发。
语法
:
ssh -A user@ssh_server
复制代码
示例
:
ssh -A user@jump_server
复制代码
假设你通过 jump_server 访问另一台服务器 server2,你可以在 jump_server 上通过 SSH 代理连接到 server2,而无需在 jump_server 上存储私钥:
ssh user@server2
复制代码
总结
端口转发
允许你通过 SSH 通道安全地转发本地或远程的网络流量,支持本地、远程和动态端口转发。
代理转发
允许在远程服务器上使用本地 SSH 代理进行身份验证,避免在远程服务器上存储私钥,增长了安全性和灵活性。
这两种功能在网络安全和远程访问方面提供了极大的便利,尤其是在访问内网资源或通过跳板服务器进行管理时。
留意事项
如果你使用 WSL 环境,可能在某些环节遇到网络题目。
远程转发时,WSL 无法将 localhsost:xxx 转发到远程端口。在纯 Linux 环境则乐成。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
正序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
发新帖
回复
花瓣小跑
金牌会员
这个人很懒什么都没写!
楼主热帖
【电脑配置】新电脑买回来怎么配置? ...
数理逻辑第4-5章
使用axios发送post请求上传文件(multip ...
应急响应(总)
最简单易懂的ios p12证书 和描述文件的 ...
计算机网络原理(谢希仁第八版)第六章课 ...
20天等待,申请终于通过,安装和体验In ...
【网络攻防】常见的网络攻防技术——黑 ...
.NET 分布式缓存中的发布和订阅模式 ...
Java代码中如何判断一个字符串中是否包 ...
标签云
挺好的
服务器
快速回复
返回顶部
返回列表