我可以使用此命令从命令行创建 ssh 连接(无需密码):
ssh -R 9900:localhost:22 user@host
我需要在系统重新启动时运行此命令,因此我将其放入 bash 脚本中并将此行添加到 crontab 中:
@reboot /home/me/script.sh > output
但在输出中我收到此错误: ssh:无法解析主机名 myhost:名称或服务未知
我认为这是因为该脚本在建立互联网连接之前启动。我sleep(180)
在 ssh 命令之前加了一个,但没有帮助。有什么建议吗?
答案1
理想情况下,这不应该使用 来完成cron
,这就是您的 init 系统的用途。您可以创建依赖于您的网络状态的服务。
但是,如果您打算使用cron
:
#!/bin/sh
host="foo.bar.com"
# Wait for host's SSH server to become accessible
while ! ssh "user@$host" exit >/dev/null 2>&1; then
sleep 1
fi
ssh -R 9900:localhost:22 "user@$host"