SSH命令使用指南

前言

摘要:本文主要介绍ssh命令的常见用法和一些高级用法,方便大家使用简单的工具就能够完成复杂的开发配置工作。

SSH(Secure Shell)是一种网络协议,用于加密方式远程登录到计算机系统,通常用于远程访问服务器。它也可以用于在不安全的网络(例如互联网)上安全地传输数据。

基本介绍

语法:

ssh [options] [user@]hostname [command]

参数说明:

  • [user@]hostname:要连接的远程主机的用户名和主机名。
  • [command]:可选的在远程主机上执行的命令。

常用选项:
-l user:指定要登录的用户。
-p port:指定连接到远程主机的端口号,默认是22
-i identity_file:指定身份验证文件(私钥文件)。
-v:详细模式,可以显示调试信息。
-C:启用压缩。
-N:不执行远程命令,只进行端口转发。
-f:后台运行。
-L local_port:remote_host:remote_port:本地端口转发。
-R remote_port:local_host:local_port:远程端口转发。
-D [bind_address:]port:动态应用程序级端口转发。

连接远程主机

ssh user@hostname
  • ssh root@192.168.137.100:常规连接
  • ssh -p 222 root@192.168.137.100:指定端口连接
  • ssh root@192.168.137.100 pwd:在远程主机上执行pwd命令
  • ssh -v root@192.168.137.100:调试模式,会输出很多连接日志
  • ssh -i /path/to/private_key user@hostname:指定用于省份验证的私钥文件路径

远程端口转发

该模式会把远端服务器的指定端口连接全部转发到本地主机的端口上,比如我们云上服务器是114.89.22.38,端口监听31000,我们进行端口转发到本地的8080端口,那么我们访问114.89.22.38:31000,就和我们本地访问127.0.0.1:8080是一样的效果

  • ssh -NR 31000:localhost:8080 root@114.89.22.38
  • ssh -NR remote_port:local_host:local_port remote_user@remote_host

这种模式其实实现了内网穿透的效果,我们访问远端服务器的端口就直接访问到我们内网中来,和frp这些工具实现的效果一致。

远端服务器配置

默认情况下绑定在远程服务器的端口只能通过localhost:31000来访问,如果我们需要在公网访问,则需要配置sshd服务的配置,修改内容如下

修改配置为GatewayPorts yes

本地端口转发

这种转发方式允许你将远程主机(ssh_server)上的端口转发到本地主机(运行 SSH 命令的机器)上的某个端口,即相当于访问本地的端口就行了。

  • ssh -NL local_port:remote_host:remote_port remote_user@remote_host
  • ssh -NL 3306:114.89.22.38:3306 root@114.89.22.38:把本地3306端口的流量转发到远程服务器的3306端口,访问本地就和访问云上一样。
  • ssh -NL 0.0.0.0:3306:114.89.22.38:3306 root@114.89.22.38,这种方式别人也可以通过访问你的ip:port访问到你转发的服务

应用场景

  • 访问远程服务:当你需要访问远程服务器上的服务,比如数据库、Web 服务或其他网络服务时,可以使用 SSH 隧道来确保连接的安全性。

  • 绕过防火墙限制:如果你的网络环境受到防火墙的限制,但 SSH 端口(通常是 22)是开放的,你可以使用 SSH 隧道来访问其他受限的服务。

  • 安全访问内网服务:如果你在远程位置需要访问公司内网的服务,可以使用 SSH 隧道通过 VPN 或直接连接到内网中的一台服务器,然后转发到内网服务。

  • 开发和测试:在开发和测试过程中,你可能需要访问本地的开发服务器,但人可能在远程。通过 SSH 隧道,你可以安全地访问这些资源。

socks5代理

ssh -ND 命令用于创建一个本地 SOCKS 代理服务器,通过 SSH 连接将本地的网络流量转发到远程服务器。这种方式可以增强网络流量的安全性和隐私性,同时也可以绕过某些网络限制。

  • ssh -ND local_port user@ssh_server:只绑定到本机127.0.0.1端口
  • ssh -ND 0.0.0.0:local_port user@ssh_server:别人也能通过本机的ip+端口来通过代理上网。

其他

ssh-kengen

生成公私钥

  • -t:rsa: 表示你想要生成的密钥类型是RSA
  • -b:2048: 表示你想要生成的密钥长度是2048位。
  • -f:my_custom_key 表示你想要生成的密钥文件的名称是my_custom_key。这将生成两个文件:my_custom_key(私钥)和my_custom_key.pub(公钥)。

ssh-keygen -t rsa -b 2048 -f my_custom_key

关于我
loading