标签归档:ssh

SSH 通过跳板机连接

TL;DR

有两种方式可以实现通过跳板机直接连接目标服务器 SSH.

# ProxyJump(推荐方式)OpenSSH >= 7.3
ssh -J user@jump-server.dealiaxy.com:10023 user@target.dealiaxy.com
# 在这条命令中,-J 后面指定了跳板机的地址(user@jump-server.dealiaxy.com)和端口(10023)。SSH 会先与跳板机建立连接,然后通过跳板机转发流量到目标服务器 target.dealiaxy.com。整个过程只需要一次登录操作,极大简化了访问流程。
# ProxyCommand
ssh -o "ProxyCommand ssh -W %h:%p user@jump-server.dealiaxy.com -p 10023" user@target.dealiaxy.com
# 在这个命令中,-o "ProxyCommand" 选项指定了一个自定义的命令来通过跳板机进行连接。具体地,ssh -W %h:%p 会将目标主机(%h)和端口(%p)转发给跳板机,然后通过跳板机建立与目标主机的连接。

Refs

解决 SSH 无操作自动断开 | pychram 超时无响应

工作中常需要连接着服务器,下班或暂时离开时会出现一段时间不操作终端,此时就会自动断开。

这本身无伤大雅,重连即可,直到我发现,一些依赖 SSH 提供的服务也会因此受到影响,比如 Pychram 远程开发,会在一段时间后无响应,只能重启 Pychram 解决,很影响效率。

为解决该问题,在网上找到一种配置方法,亲测一夜 (10h+) 不会再断开,在此分享:

众所周知,SSH 是用于与远程服务器建立加密通信通道的,因此配置涉及服务端和客户端:

  • 服务端 /etc/ssh/sshd_config
-#ClientAliveInterval 0  #服务器向客户端发送请求消息的时间间隔,默认为0,不发送
-#ClientAliveCountMax 3  #服务器发出求后客户端没有响应的最大次数,超过后将自动断开。
+ClientAliveInterval 60  #每60秒发送一个KeepAlive请求
+ClientAliveCountMax 15  #总时间为:15*60 ,15分钟没有操作,终端断开。

# 以下任意命令重启 sshd 服务
service sshd reload
service sshd restart
systemctl sshd restart
  • 客户端 ~/.ssh/config
# 修改 ~/.ssh/config 对当前用户生效

# 这样配置通配所有服务端
Host *
  ServerAliveInterval 60

# 指定IP配置
Host *hostname.com    #指定IP
  ServerAliveInterval 60

# 或是全局配置(对所有用户生效)
vim /etc/ssh/sshd_config

+ ServerAliveInterval 60

参考文献