ssh 连接篇

August 27, 2020 默认分类

SSH 用于登录远程主机,并在远程主机上执行命令,是不安全的 rshrlogin 的替代品,并且在不安全的网络上提供两台主机之间的安全连接。SSH 不仅用于远程直接执行命令,也提供更丰富的服务,如 sftp,scp。

端口与用户

ssh 不接受 主机:端口 的语法。端口需要使用 -p 端口 指定。

登录用户名需要在命令行中或配置文件中指定。如不指定用户名,ssh 会直接使用当前登录会话用户名进行登录,而不会询问用户。
若要指定用户名,使用 user@host 语法,或 -l 用户名

指定地址族

如果一个域名既有 A 记录(IPv4),又有 AAAA 记录(IPv6),ssh 会挑选其中一种进行连接。但是,ssh 似乎没有使用 Happy Eyeball 算法,因此,可能会卡在其中一种连接上,但使用另一个地址族就无此问题。手动指定地址族可以避免这种问题。

  • -4:使用 IPv4
  • -6:使用 IPv6

转发 X11 连接:-X

当转发 X11 连接时,ssh 会自动为你解决一切 X11 的认证与连接问题。成功连接后,远程主机上执行的程序可以通过 ssh 的转发,与本地主机的 X11 服务器进行连接,从而在本地主机绘制图形界面。
使用方法:加上 -X 选项,连接成功后在远程主机的 shell 上执行程序,图形界面会出现在本地主机。

注意:决不要向不信任的远程主机转发 X11 连接。攻击者可以通过这条连接进行恶意活动,例如记录本地主机的键盘活动。
虽然可以使用 X安全拓展,但它可能导致应用程序崩溃,并且不是(发行版中)-X 的默认行为。

转发 ssh agent:-A

将 ssh agent 的连接转发至远程主机。转发后,当远程主机使用 ssh agent 时,使用的实际上是本地主机的 ssh agent。
应用:

  • 跳板机
  • sudo 认证

注意:仅向信任的远程主机转发 ssh agent 连接。攻击者无法通过此连接获取私钥,但可以获取密钥信息、进行签名。

端口转发

用于在本地主机与远程主机之间转发 TCP 连接与 Unix域套接字(Unix Domain Socket)。

注意:IPv6 地址需要用方括号括起。例:[::1]

动态转发

选项:-D [IP地址:]端口
指定此选项后,SSH 会在指定的端口上监听,作为 SOCKS4,SOCKS5 服务器提供动态转发。

本地转发:将连接向远程主机转发

选项:-L[本地地址]:[远程地址]
地址可以为 IP:端口 ,也可以是 UNIX 域套接字路径。

更具体一点,它可以有以下形式:

  • [监听地址]:端口:[远程地址]:端口
  • [监听地址]:端口:远程套接字路径
  • 本地套接字路径:[远程地址]:端口
  • 本地套接字路径:远程套接字路径
    用途:将远程主机上的远程地址转发至本地主机上的本地地址。

例:使用本地主机上的 127.0.0.3:5000(这没问题)访问位于远程主机上的 127.0.0.1:8000 管理界面:
-L127.0.0.3:5000:127.0.0.1:8000

远程转发:将远程主机的连接向本地转发

选项:-R[远程地址]:[本地地址]
形式与本地转发类似。如果不指定本地地址,则 ssh 将作为 SOCKS 服务器在远程主机上的指定端口上监听,自动打开转发端口。如果将本地地址的端口指定为 0,ssh 会自动分配端口。

跳板机

选项:-J 跳板机地址,...
该选项允许方便而安全地经由跳板机(可以是多个,用英文逗号分隔)连接目标主机。ssh 其它的选项用于目标主机,而非跳板机。若要配置跳板机的连接参数,请修改~/.ssh/config

压缩:-C

使用 gzip 的算法压缩传输的所有数据(包含转发的连接、标准输入输出、标准错误)。

注意:与用于 HTTP 与 HTTPS 的压缩不同,SSH 压缩对低速连接很有用,但对高速连接的性能可能无益甚至有害。


相关文章

添加新评论

 我们使用cookie在本地保存您评论时填写的信息,参见隐私条款