Rot*_*ock 22 ssh openssh 16.04
对 linux 和 Ubuntu 来说是全新的。设置机器来进行深度学习/神经网络。到目前为止,进展顺利。安装并运行所有东西。我希望能够从我的 Mac 笔记本电脑 ssh 以使用该系统。我安装了openssh并让它工作。
但是,当我重新启动机器时,ssh 服务器不会重新启动。我检查sudo service ssh status
并报告和错误。然后我可以启动它,一切正常。
我的第一个想法是我需要告诉它在重新启动时启动,我发现这个线程说它应该默认启动,我不需要添加 chrontab 或类似的东西。所以我不认为是这样。
然后我找到了这个线程,它建议使用命令sudo update-rc.d ssh defaults
,但是那个线程已经很老了,而且那个时候似乎答案可能不对?
然后我发现这个线程建议注释掉sshd_config文件中的ListenAddress
行。基本上它说,如果使用 ListenAddress,它可能会在 DCHP 分配 IP 之前尝试获取 IP,因此启动失败。这是有道理的。但是我需要该参数才能使我的端口转发在我的家庭网络上工作。
ListenAddress条目下的此文档说
The default is to listen on all local addresses.
Run Code Online (Sandbox Code Playgroud)
所以也许我不需要它来使端口转发工作?
我按照上一个线程查看了这个也很旧的错误报告,但建议每次 netmanager 获得新 IP 时使用网络管理器重新启动 ssh。
echo /etc/init.d/ssh restart > /etc/NetworkManager/dispatcher.d/10ssh
chmod 755 /etc/NetworkManager/dispatcher.d/10ssh
Run Code Online (Sandbox Code Playgroud)
这比这个菜鸟在这一点上可以评估的要多得多。那安全吗?这是这样做的方法吗?在过去的 7 年里有没有其他的东西被制定出来?
任何建议都会很棒。谢谢。
Rob*_*tle 58
你有没有试过简单地设置
sudo systemctl enable ssh
Run Code Online (Sandbox Code Playgroud)
?
这就是我在启动时将 ssh 设置为运行的方式。
****我将离开答案的上述部分,以防它对遇到此帖子的其他人有帮助****
引用我上面的评论:
你是如何设置端口转发的?我根本不使用 ListenAddress 并且在我的家庭服务器上一切正常。我的路由器将进入我指定的端口的任何内容(如果您想要标准端口为 22,但您可以使用任何内容,只要它不与您的国际网络上的其他服务冲突)到我想要的计算机。例如,任何进入端口 12345 的内容都会被转发到我的 CentOS 服务器上的端口 22。任何进入 12346 的东西都会被转发到我的无头 RasPi 的 22 端口。任何进入 12347 的内容都将转到端口 6697 以供我的 RasPi 上的 IRC 保镖使用
ListenAddress 与端口转发无关,ListenAdress 可用于在一个或多个 NIC 上配置多个 IP 地址的服务器。从这里引用(整个页面是一个很好的解释):https : //www.cyberciti.biz/tips/howto-openssh-sshd-listen-multiple-ip-address.html
假设您总共有 8 个公共 IP 地址和一个私有 IP 地址。您>希望将 sshd 绑定到一个选定的公共 IP(例如 70.5.xx.xx)和私有 >IP(10.1.5.1)。
幸运的是,有一种简单的方法可以使用 ListenAddress 选项来实现这一点。> 指定 sshd 应该监听的本地地址。如果从配置文件中跳过此指令,sshd 将绑定或列出所有可用的 IP 地址。
这是为了允许您的多个 IP 中的一个接受 ssh 连接。我猜您将 ListenAddress 设置为您的公共 IP 或路由器的内部 IP - 我猜如果您将其设置为您服务器的本地 IP,它会正常工作。无论如何,现在您知道了 ListenAddress 的工作原理,并且如果您必须配置更复杂的服务器,您就可以准备好了。很高兴听到你一切顺利。
小智 5
由于建议的解决方案对我不起作用,我最终发现在启动时需要额外的命令来启动 SSH:
sudo update-rc.d ssh defaults
sudo systemctl enable ssh.socket
Run Code Online (Sandbox Code Playgroud)
有人提到这个命令:
sudo systemctl enable ssh.service
Run Code Online (Sandbox Code Playgroud)
应该执行而不是这个命令:
sudo systemctl enable ssh
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
111652 次 |
最近记录: |