首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用ssh和crontab的问题

使用ssh和crontab的问题
EN

Unix & Linux用户
提问于 2016-07-18 09:57:46
回答 2查看 1.8K关注 0票数 0

我需要在防火墙后面的私有服务器和公共服务器之间建立一个永久的ssh隧道,这样我就可以通过公共服务器随时进入私有服务器。

当我在私有服务器上手动执行时,

代码语言:javascript
运行
复制
ssh -R 6666:localhost:22 username@public_host

一切都很好。但是,当我将这一行放入crontab -e以便隧道在重新启动时自动重新建立时,它就不能工作了。知道出了什么问题吗?

注意:服务器之间的公钥/私钥对已经设置并正常工作。

EN

回答 2

Unix & Linux用户

发布于 2016-07-18 10:20:24

使用autossh,这是为您所做的。它是为不需要手动启动或重新启动的持久连接设计的,这些连接是自我监控的,并且执行与普通ssh客户端相同的隧道工作。

票数 1
EN

Unix & Linux用户

发布于 2016-07-19 01:04:27

在会话上下文之外执行ssh命令,因此可能缺少一些通常可用的内容。

想必你是在用钥匙进行身份验证。从cron的工作中有钥匙可用吗?

  • 如果密钥文件是密码保护的,那么显然密钥是不可用的,因为您可能还没有输入密码。即使您输入了密码,密钥仍然存在于会话密钥代理的内存中。从您的会话中启动的ssh命令知道如何通过环境变量SSH_AUTH_SOCK与关键代理联系,但是从crontab启动的ssh没有这个变量。
  • 如果您的主目录是加密的,那么密钥文件在启动时是不可用的,因为解密的主目录尚未挂载。在键入解密密码之前,无法挂载解密的主目录。

如果问题是密钥在某种程度上是密码保护的,那么在输入密码之前,您就无法建立隧道。你有两个解决方案:

  • 等待会话开始建立隧道。这保留了设置的安全性,但意味着隧道要到以后才可用。可以将隧道建立添加到会话启动脚本中。
  • 使用存储在磁盘上的明文的私钥来建立隧道。
票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/296582

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档