如何开启Linux的SSH服务?sudo service ssh start和sudo systemctl enable ssh两种不同的开启方式有什么区别?

问题描述

        今天遇到一个有趣的事情,用另一台机器ssh我的机器竟然不work了,这是什么情况呢?

解决方法

        于是我就在网上搜

        “linux开启ssh”

        “把自身linux电脑作为服务器让其他机器链接”

        “把自身linux电脑作为服务器让其他机器链接linux命令”

        ……

        终于找到了一个靠谱的博客:

安装ssh服务端
sudo apt-get install ssh*
激活ssh服务
sudo service ssh start
查看ssh运行状态
sudo service ssh status
结果图如下

        我按照博主的内容运行了之后发现是可以运行的,那就好办了,但是我明明记得之前没有这么麻烦啊!直到我看到了下面这部分内容:

         哦这才对嘛,这才是我知道的内容。详细内容请查看:

自用Linux电脑改装为自用小型服务器及使用入门教程icon-default.png?t=N7T8https://blog.csdn.net/astro_jingliang/article/details/127233173

问题后记

        针对上述问题,其实就很清晰,如果你想自己的机器一直可以被其他机器链接,或者感觉每次手动开启和手动关闭麻烦,那就选择自动开启,因为这是系统级别的服务,linux本身就具有。

sudo systemctl enable sshsudo service ssh start 都涉及到管理和启动SSH(Secure Shell)服务,但它们执行不同的操作:

  1. sudo systemctl enable ssh:

    • systemctl 是用于管理 systemd 服务的命令。
    • enable 表示启用一个服务,使其在系统引导时自动启动。
    • ssh 是服务的名称,代表SSH服务器。

    这个命令的目的是启用SSH服务,以便在系统引导时自动启动。这样,每当你启动或重启系统时,SSH服务都会自动启动。

  2. sudo service ssh start:

    • service 命令是用于启动、停止、重启或查询系统服务状态的通用工具。
    • ssh 是服务的名称,代表SSH服务器。
    • start 表示启动SSH服务。

    这个命令的目的是手动启动SSH服务,而不涉及到是否在系统引导时自动启动。这对于需要在运行时手动启动或重新启动SSH服务的情况非常有用。

综上所述,sudo systemctl enable ssh 用于配置SSH服务在系统引导时自动启动,而 sudo service ssh start 用于手动启动SSH服务。如果你想确保SSH服务在系统引导时自动启动,并且还想手动启动它,你可以分别运行这两个命令。

         同时运行上面博客里提到的指令:

ssh -X 用户名@ip 

         可能会报错,报错内容为:

/usr/bin/xauth: file /home/visionx/.Xauthority does not exist

        其时遇到这个问题无所谓,因为这个已经链接成功了。当然,也可以用这个方法解决这个问题:

  1. .Xauthority 文件不存在:首先确保 /home/visionx/.Xauthority 文件确实不存在。你可以运行以下命令来检查:

    ls -l /home/visionx/.Xauthority 

    如果文件确实不存在,你可以尝试通过创建一个新的 .Xauthority 文件来解决问题:

    touch /home/visionx/.Xauthority 

    然后,重新运行你的SSH连接命令。

  2. 权限问题:如果 .Xauthority 文件存在但无法访问,可能是因为文件的权限设置不正确。确保 .Xauthority 文件的所有者是正确的用户(visionx)并且具有正确的权限。你可以运行以下命令来更正文件的权限:

    chown visionx:visionx /home/visionx/.Xauthority 
    chmod 600 /home/visionx/.Xauthority

完结撒花

        至此就把这个问题彻底解决了,我相信肯定有其他文章讲的更好,只是没被我遇到,感谢今天遇到的这位。

### 问题分析 在 Linux 中遇到 `Failed to restart ssh.service: Unit ssh.service not found` 的错误通常是因为 OpenSSH-server 软件包未安装或者 SSH 服务名称不匹配。以下是详细的解决方案。 --- ### 解决方法 #### 方法一:确认并安装 OpenSSH-server 如果系统中缺少 OpenSSH-server 软件包,可以通过以下命令检查安装: ```bash dpkg --get-selections | grep openssh-server ``` 如果没有返回任何结果,则表明该软件包尚未安装。可以运行以下命令来安装它: ```bash sudo apt update sudo apt install openssh-server ``` 完成安装后,尝试重新启动 SSH 服务: ```bash sudo systemctl start ssh ``` 这一步解决了因缺失必要组件而导致的服务不可用问题[^1]。 --- #### 方法二:验证服务名称是否正确 某些发行版可能使用不同服务名称。例如,在部分 Ubuntu 或 Debian 系统中,SSH 服务名为 `sshd.service` 而不是 `ssh.service`。因此,建议通过以下方式查找实际使用的服务名: ```bash systemctl list-units --type=service | grep ssh ``` 如果发现服务名为 `sshd.service`,则应改为执行以下命令: ```bash sudo systemctl start sshd sudo systemctl enable sshd ``` 此操作确保了服务管理器能够识别正确的单元文件[^2]。 --- #### 方法三:排查 Root 用户权限问题 当尝试以 Root 用户身份登录时发生认证失败的情况,可能是由于 PAM (Pluggable Authentication Module) 配置不当所致。具体表现为日志中的错误消息类似于: ``` pam_succeed_if(sshd:auth): requirement "uid >= 1000" not met by user "root" ``` 这种情况下需要编辑 `/etc/ssh/sshd_config` 文件,调整允许的用户范围或将 Root 登录设置为显式许可状态: ```bash PermitRootLogin yes PasswordAuthentication yes ``` 保存更改后重启 SSH 服务即可生效。另外还需注意是否存在其他安全策略限制(如 SELinux),这些也可能干扰正常访问行为[^3]。 --- #### 方法四:恢复损坏的配置文件 假如之前修改过 SSH 相关配置却未能成功应用更新,那么很可能存在语法错误或其他异常状况影响加载过程。此时可考虑备份现有参数再重设默认模板作为临时修复手段之一;亦或是查阅官方文档获取最新版本推荐值用于替换旧数据集。 最后再次测试连接功能恢复正常与否: ```bash sudo service ssh status ``` 上述步骤有助于定位潜在隐患所在位置从而采取针对性措施加以排除。 --- ### 总结 综上所述,针对 “Failed to restart ssh.service: Unit ssh.service not found” 这类常见故障现象可以从多个角度切入处理直至彻底消除障碍因素为止。务必遵循标准流程逐一检验各项条件满足程度才能保障最终效果达到预期目标水平之上。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值