ssh的一些常见用法
ssh 是使用 linux 必不可要的一个工具,它是 2 台 主机交流的桥梁。
连接的要求
- 被连接的一端必须开启了 ssh 服务,常见的就是 安装了 openssh-server
- 知道被连接机器的用户名 密码
- 密钥登录可以不需要密码,前提是在被连接的机器里面放入了公钥,自己有私钥
- 必须知道被连接机器开放的端口,这通常会是 22,但是为了安全这个可以改成其他的端口
1. 常见用法
1.1. 常规的连接到远端的服务器
ssh username@remote_host
- username 服务器的用户名
- @ 分隔符
- remote_host 服务器 ip
1.2. 使用密钥连接到远端的服务器
ssh -i path/to/key_file username@remote_host
- -i path/to/key_file 指定私钥的地址
- 私钥一般要求 400 的权限否则不让用
1.3. 连接到一个特殊的端口
ssh username@remote_host -p 2222
- -p 2222 连接到服务器的 2222 端口
- 常见的未修改的端口是 22
1.4. 不会登录到shell会话,开一个虚拟的 终端
ssh username@remote_host -t df -h
- 使用 -t 选项执行命令时,命令在远程服务器的非交互式shell中执行,一旦命令完成,连接就会关闭。
- -t df -h 会立即返回远程服务器上的磁盘使用情况,而不会让你登录到远程服务器的shell会话中。
1.5. SSH 隧道:[D]动态端口转发( localhost:1080上的 SOCKS 代理):
使用了SSH(Secure Shell)的一个非常有用的功能,即创建一个SOCKS5代理
ssh -D 1080 username@remote_host
-D 1080
:这个选项告诉SSH客户端在本地机器上创建一个动态的SOCKS5代理,监听本地的1080端口。这意味着任何通过这个代理发送的网络请求都会被转发到通过SSH连接到的远程服务器,并从那里发出。这对于绕过网络限制、访问远程服务器的网络资源或增加网络请求的安全性非常有用。-D
:指定动态转发的本地端口号。1080
:这是本地监听的端口号,你可以根据需要更改为其他端口。
1.6. 设置了一个本地端口转发器,允许你通过加密的SSH连接安全地访问远程网络中的服务
ssh -L 9999:example.org:80 -N -T username@remote_host
- -L 9999:example.org:80:这个选项设置了本地端口转发。它将本地机器的9999端口上的流量转发到example.org的80端口上。这意味着,当你在本地机器上访问localhost:9999时,实际上是在访问example.org的HTTP服务(通常是网页)。
- -L:指定本地端口转发。
- 9999:这是本地监听的端口号。
- example.org:80:这是要转发到的远程主机和端口,即目标服务的地址和端口。
- -N:这个选项告诉SSH客户端不要执行远程命令。通常,SSH连接建立后会启动一个远程shell,但使用-N选项时,SSH仅作为端口转发器运行,不打开shell会话。
- -T:这个选项禁用为SSH会话分配伪终端(pseudo-terminal)。由于-N选项已经禁用了远程命令执行,因此通常也会使用-T来避免不必要的资源分配。
1.7. 通过跳转主机连接到远程服务器(可以指定多个跳转,并用逗号分隔)
ssh -J username@jump_host username@remote_host
- -J username@jump_host:这个选项指定了跳板机的地址和用户名。SSH客户端会首先连接到这个跳板机,然后通过跳板机再连接到目标远程服务器。
- -J:指定跳板机。这是SSH的一个较新选项,可能在一些旧版本的SSH客户端中不可用。如果你的SSH客户端不支持-J选项,你可能需要使用-o ProxyJump=username@jump_host作为替代。
- username@jump_host:跳板机的地址和用户名。你需要有权限访问这个跳板机。