我使用 ssh 隧道从本地网络设备上的远程服务器获取一些数据:
su -s /bin/bash -c "autossh -f -M 3333 -C -N -R 0.0.0.0:2222:y.y.y.y:1111 [email protected] k1001 -i /home/dbuser/.ssh/id_dsa" dbuser
有时有效,有时无效。它不太可靠。
有人有更好的解决方案吗?
sshd 的某些参数是否可以更好地发挥作用?
#打包生成配置文件 # 详细信息请参阅 sshd(8) 手册页 # 我们监听哪些端口、IP 和协议 端口 22 # 使用这些选项来限制 sshd 将绑定到哪些接口/协议 #聆听地址 :: #监听地址 0.0.0.0 协议 2 # 协议版本 2 的 HostKeys 主机密钥 /etc/ssh/ssh_host_rsa_key 主机密钥 /etc/ssh/ssh_host_dsa_key #出于安全考虑,开启权限分离 UsePrivilegeSeparation 是 # 临时版本 1 服务器密钥的生命周期和大小 密钥再生间隔 3600 服务器密钥位 768 # 日志记录 Syslog 工具验证 日志级别信息 # 验证: 登录宽限时间 120 PermitRootLogin 是 StrictModes 是 RSA身份验证 是 公钥认证 是 #AuthorizedKeys文件 %h/.xxx/authorized_keys # 不要读取用户的 ~/.rhosts 和 ~/.shosts 文件 IgnoreRhosts 是 # 为了实现此功能,您还需要 /etc/ssh_known_hosts 中的主机密钥 RhostsRSAAuthentication 否 # 协议版本 2 类似 基于主机的身份验证 否 # 如果您不信任 RhostsRSAAuthentication 的 ~/.ssh/known_hosts,请取消注释 #IgnoreUserKnownHosts 是 # 要启用空密码,请更改为是(不推荐) 允许空密码 否 # 改为 yes 以启用质询-响应密码(注意 # 一些 PAM 模块和线程) ChallengeResponseAuthentication 否 # 更改为 no 以禁用隧道明文密码 #PasswordAuthentication 是 # Kerberos 选项 #KerberosAuthentication 否 #KerberosGetAFSToken 否 #KerberosOrLocalPasswd 是 #KerberosTicketCleanup 是 # GSSAPI 选项 #GSSAPIAuthentication 否 #GSSAPICleanupCredentials 是 X11转发 是 X11显示偏移 10 PrintMotd 号码 PrintLastLog 是 TCPKeepAlive 是 #UseLogin 没有 #MaxStartups 10:30:60 #横幅 /etc/issue.net # 允许客户端传递区域环境变量 接受环境语言 LC_* 子系统 sftp /usr/lib/openssh/sftp-server UsePAM 是
谢谢
答案1
SSH 隧道是一种很好的“快速”解决方案,可用于通过防火墙获取数据,但它们是为 X-forwarding 等交互式内容而设计的。它们不适用于长期或批量传输。
如果可能的话,您可能应该考虑设置永久 VPN。如果不行,我会考虑减少通过隧道完成的工作量,并使其更加面向批处理。(每小时抓取一点数据,并在运行之间断开连接)
您还可以尝试使用 ClientAlive 和 ServerAlive 设置。这将导致系统定期通过加密通道进行 ping。这通常会阻止防火墙断开空闲的 TCP 连接。
答案2
看一下 Dan J Bernstein 的 daemontools。
它可以监控任何进程,并在发生故障时立即重新启动。非常适合保持隧道等事物的正常运行。您可以在 5 分钟内完成设置。
http://cr.yp.to/daemontools.html
欲了解简单 HOWTO,请参阅:
http://www.nightbluefruit.com/blog/2014/04/how-to-use-dj-bernsteins-daemontools/