我已经在puppy linux上安装了sshd。有人可以告诉我如何启动 sshd 吗?
答案1
我在这里找到了在 Bionic Puppy Linux 上设置 sshd(ssh 服务器)的有用说明:PuppyLinux 时事通讯 - 2018 年 12 月
默认情况下,所有小狗都应该安装 SSH。尽管有这个名称,但这只是 SSH 的客户端部分,它允许用户登录到运行其他操作系统(例如 Raspberry Pi、Ubuntu、Antix 等)的主机。通过在 /etc/ 中查找 ssh_config 文件来确认此安装。 SSH。无需编辑此文件,但在某些情况下可能需要更改此文件的权限才能作为服务器运行。
如果另一个 Linux 发行版(例如 Ubuntu)在同一 LAN 上运行 SSH 服务器,您可以按照步骤 10 测试 Puppy 作为客户端的操作。这不是必需的,因为我们可以在作为设置的一部分,按照步骤 8 操作本地或主机设备。
要将 SSH 作为服务器运行,需要安装 SSHD - SSH 守护程序服务器,它在端口 22(或以其他方式配置)上侦听请求访问 Host Secure Shell 的客户端。主机软件 Openssh-server 可以从 PPM 安装。从 LX Bionic pup 开始,版本为 7.6p1,在早期的 Tahrpuppies 上,版本为 6.6.1p1。
从 PPM 安装 Openssh-server 后,打开位于 的主 SSH 文件夹
/etc/ssh
。该文件夹必须有两个配置文件:ssh_config
和sshd_config
,以及一个名为 moduli.conf 的文件。如果默认
sshd_config
文件很可能会出现这样的情况不是存在,从以下位置下载脚本: https://github.com/openssh/openssh-portable/blob/master/sshd_config必须将该脚本粘贴到新创建的文本文件或现有的 shell 脚本中,该脚本已被删除,用 sshd 脚本填充,然后重新命名。可能需要更改权限才能使文件可编辑或访问。
如果失败,请从安装了 SSHD 的另一个操作系统 Linux 发行版复制该文件。但是,最好从默认脚本开始。
sshd_config
现在必须编辑该文件才能在 Puppy Linux 下运行。根据经验,脚本中下面的一些行似乎比其他行更重要,如 RHS (#) 注释中所示。删除下面列出的行左侧的所有“#”注释标签并进行编辑,如下所示。可选行应该能够保留为注释,因为这些是默认配置。
Port 22 # Optional, as this is the default AddressFamily any # Optional ? LoginGraceTime 2m # Optional PermitRootLogin yes # Critical for puppy linux PubkeyAuthentication no # Critical for initial use PasswordAuthentication yes # Critical for initial use PermitEmptyPasswords yes # Optional, otherwise use no ChallengeResponseAuthentication yes # Critical for initial use UsePAM no # Critical AllowTcpForwarding yes # Optional ? X11Forwarding yes # If one wishes to run GUI applications in the host computer X11DisplayOffset 10 # Recommended X11UseLocalhost yes # Optional ? PrintMotd no # Optional ? TCPKeepAlive yes # Optional ? Subsystem sftp /usr/lib/openssh/sftp-server # Optional ?
现在已准备好在终端中启动 SSHD 服务器:
/etc/init.d/ssh start
。应该会显示错误消息,因为尚未设置所有功能。暂时忽略这些。无论如何,现在可以检查 SSH 是否正在运行。在终端中运行
netstat -tupan
它将给出主机设备正在侦听的所有端口的列表。我们正在寻找的行引用端口 22,如下所示:Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 6866/sshd
对于仅列出端口 22 的较短输出,请使用:(
netstat -anplt | grep :22
注意空格),如果 SSHD 正在运行,则应给出:tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 6866/sshd
没有列出端口 22 将意味着 SSH 未运行并且需要检查设置。
下一步是检查文件
/etc/hosts.allow
和/etc/hosts.deny
设置是否正确。显然,由于 Puppy Linux 以“root”用户身份运行,因此操作系统设置为自动禁止访问大多数端口作为安全措施。# ALL: ALL
删除或用in注释hosts.deny
并将数据更改hosts.allow
为:ALL: LOCAL SSH: ALL
这种调整对于其他需要远程访问的应用程序也很重要,例如使用 MPD 的流媒体音乐。
确保关闭防火墙以测试本地 SSH。在尝试使用单独的客户端设备之前,SSHD 应能够连接到本地主机。
使用以下命令在终端中测试设置:
ssh -vvv root@localhost
或者ssh -vvv [email protected]
(其中127.0.0.1
是通过使用确定的本地主机的 IP 地址ifconfig
)。将开关设置为
-vvv
将会提供扩展的详细输出,以便查看操作在哪里停止。如果信息较少,请改用-v
。很可能SSHD会一直运行,直到报出以下错误:
debug1: SSH2_MSG_KEXINIT sent Read from socket failed: Connection reset by peer OR ssh_exchange_identification: read: Connection reset by peer OR ssh_exchange_identification: read: Closed by unknown
答案2
您通常可以使用脚本在 Puppy 上启动服务/etc/init.d
。
$ sudo /etc/init.d/sshd start
如果您发现它已经在运行,如下所示:
$ netstat -anplt | grep :22
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
tcp6 0 0 :::22 :::* LISTEN -
然后您知道守护进程正在运行并侦听端口 22。如果是这种情况,那么您的问题可能与此线程中讨论的问题相关,标题为:无法 ssh 到小狗机器 - 连接被拒绝。 。
这里有一个使用 Puppy 启用的防火墙,需要添加一条允许 SSH 访问的规则,或者需要禁用它。为此,您需要使用iptables
来操纵防火墙。例如:
$ sudo iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT