有趣的技巧和SSH技巧

有关有效使用SSH的一些技巧。让我们谈谈如何:

  • 对SSH连接使用两因素身份验证
  • 使用“密钥转发”(代理转发)是安全的;
  • 退出挂起的SSH会话;
  • 退出或断开连接时,请保持终端处于打开状态;
  • 与朋友共享远程终端(不缩放!)。

图片

SSH多因素身份验证


在SSH中添加第二种身份验证因素有五种方法:

  1. OpenSSH ( ).

    2020 OpenSSH FIDO U2F (Universal Second Factor). , .

    , 8.2 . ssh -V, nc [servername] 22.

    ecdsa-sk ed25519-sk ( ). $ ssh-keygen -t ecdsa-sk -f ~/.ssh/id_ecdsa_sk. , U2F . U2F , .

    . OpenSSH -sk-«» . U2F . , . $ ssh-keygen -t ecdsa-sk -O resident -f ~/.ssh/id_ecdsa_sk. , $ ssh-add -K. .
  2. PIV+PKCS11 Yubikey. , SSH-, . Yubikey U2F+SSH with PIV/PKCS11. , FIDO U2F. , .
  3. ssh- yubikey-agent. Filippo Valsorda SSH- Yubikeys. .
  4. Touch ID sekey. Sekey — SSH- , secure enclave MacOS Touch ID.
  5. Single Sign On SSH. . Single Sign On SSH , , .


(agent forwarding)


在SSH中转发密钥可使远程主机访问本地SSH代理。当您的SSH客户端使用密钥转发(通常由option激活ssh -A)时,连接中有2个通道-交互式会话和密钥转发通道。本地SSH代理创建一个IPC套接字,该套接字通过此通道连接到远程主机。这很危险,因为在远程主机上具有root特权的用户可以访问您的本地SSH代理,并且可以潜在地使用它代表您访问网络资源。使用OpenSSH附带的标准SSH代理,您永远不会知道发生了什么。但是,如果您使用U2F密钥(或Sekey),则可以停止任何尝试使用SSH代理的尝试。

即使有此限制,定期使用密钥转发也是完全可以接受的。不要对所有连接都使用此方法。仅在确定特定情况下需要时才使用。

退出挂起的SSH会话


SSH会话通常由于网络中断,可执行程序失去控制或阻止键盘输入的终端控制序列之一而冻结。

以下是摆脱挂起会话的一些方法:

  1. 网络中断时自动退出。在SSH配置中,.ssh/config您需要添加:它将每秒通过将回显请求发送到远程主机来检查连接如果没有更多的此类请求无法解决,则SSH将关闭连接。

    ServerAliveInterval 5
    ServerAliveCountMax 1


    sshServerAliveIntervalServerAliveCountMax
  2. . ssh ~ . ~. ( ).

    ~? , . , ~ , .

?发明互联网时,计算机并不是特别移动。当您在笔记本电脑上工作并在IPv4 WiFi网络之间切换时,您的IP地址会更改。由于SSH基于TCP连接,而TCP连接取决于具有固定IP地址的连接点,因此,每次连接到另一个网络时,SSH连接都会丢失。当您的IP地址更改时,网络堆栈检测到连接丢失需要一些时间。 TCP连接并不意味着在网络出现问题时可以迅速关闭其中一方,因此它将尝试重试发送数据的时间。在您的终端中,会话将被卡住。 IPv6添加了允许设备在网络之间切换时维护其IP地址的功能。因此,总有一天这将不再是一个问题。

如何使终端在远程主机上保持打开状态


当您在网络之间切换或要断开一段时间时,有两种保存会话的选项:

  1. 使用MoshEternal Terminal如果您确实需要一个不会崩溃的连接,即使您在网络之间进行切换,也可以使用Mosh-移动外壳。Mosh是安全的外壳,使用SSH初始化会话(握手),然后切换到自己的加密通道。这个频道非常稳定。它可以处理各种情况,包括与Internet断开连接,更改笔记本电脑的IP地址,通过网络传输时出现较大延迟等。感谢UDP的魔力和Mosh使用的同步协议。

    Mosh , 60000–61000 UDP . mosh user@server .

    Mosh , SSH, - . , . SSH , , Mosh .
  2. tmux. , , tmux. SSH- , tmux attach, tmux. — , macOS .

    tmux Byobu — , . Byobu Ubuntu macOS Homebrew.



当您解决服务器的复杂问题时,我想与其他人共享SSH会话。tmux是最好的共享终端工具。
因此,您需要执行以下操作:

  1. 确保已将其tmux安装在DMZ中的服务器上(或要连接的位置)。
  2. 你们两个都需要使用相同的帐户通过SSH连接到服务器
  3. 你们其中之一必须运行tmux来创建tmux会话。
  4. 另一个必须执行命令tmux attach
  5. 瞧!您已共享终端。

如果您需要对多用户会话进行更多的微调,请使用tmate这个fork tmux,它使共享会话变得更加容易。

Rexoft分析部负责人Andrey Zinchenko翻译

All Articles