我正在跟进本教程。
在 16.04 中安装 ssh 的部分我做了:
sudo apt-get install ssh
我使用以下方法测试了 ssh:
which ssh
它给了我一条路径,表明它正在运行。
但当我尝试时:
which sshd
什么都没生成。没有文件位置,没有错误,什么都没有?
我该如何修复 sshd 安装?
编辑:
回答steeldriver:
$ echo $path
/home/hugh/.sdkman/candidates/java/current/bin:/home/hugh/anaconda3/bin:~/anaconda/bin:~/anaconda/bin:~/anaconda/bin:/home/hugh/bin:/home/hugh/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
$ dpkg -L openssh-server
dpkg-query: package 'openssh-server' is not installed
Use dpkg --info (= dpkg-deb --info) to examine archive files,
and dpkg --contents (= dpkg-deb --contents) to list their contents.
我可能应该提到,我正在一台独立的机器上运行所有这些,目前无法访问服务器。这能解释这个问题吗?
答案1
实现此功能的最佳方法是安装 openssh-client 包(带有客户端工具)和 openssh-server 包(带有服务器守护程序):
sudo apt-get install openssh-client openssh-server
这应该可以解决你的问题。
答案2
这是一个很晚的回复,但对于某些人来说可能还是有用的。
对于任何可能遇到与问题相同的情况(即which ssh
显示位置但which sshd
不显示任何内容)的人来说,这仅仅意味着你只有 SSH 客户端和没有 SSH 服务器在您的机器上运行。您可以通过 SSH 连接到其他计算机,但这些计算机无法通过 SSH 连接到您。
我尝试通过以下方式安装 ssh 服务器:
sudo apt install openssh-server
当我运行时,which sshd
我仍然什么也没得到。我所做的是通过以下方式完全删除 SSH:(请注意,如果您复制此命令,它不会要求您确认,因为我使用了 -y 确认)
sudo apt remove ssh --purge -y
然后我重新安装了 ssh(它添加了openssh-客户端和openssh-服务器) 通过:
sudo apt install ssh -y
以这种方式重新安装 ssh 后,为了确保理智和安全,我通过以下方式重新启动了 SSH 守护程序:
sudo service sshd restart
当我这样做时which ssh
,我得到了回应,当我发布时也是如此which sshd
。我希望这对其他人有所帮助。顺便说一句Ubuntu 18.04实例已开启虚拟盒在Windows 10机器,我想从 Windows 访问它(是的,我知道有 WSL 并且我使用它)。
答案3
sudo
可能会让您访问sshd
:
$ sudo which sshd
/usr/sbin/sshd
理由如下:
sshd
安装在/usr/sbin
- 即使您的
$PATH
不包括/usr/sbin
,sudo
通常也可以让您访问/usr/sbin
顺便说一句,@steeldriver 的评论也提到了这一点
请记住,它仅搜索当前用户的路径 - 对于非特权用户,可能不包括 /usr/sbin
在您的帖子的编辑部分进行评论(以防其他读者对此感到困惑)
我假设您的编辑是对以下内容的回复:
请使用 echo $PATH 和 dpkg -L openssh-server 的输出编辑您的问题 – steeldriver
但是您应该在安装的服务器上运行该命令sshd
,而不是在客户端计算机上。
我写这篇文章并不是因为我要你修复这个问题(我知道这是一篇旧帖子),而是因为其他读者不会对错误地方的输出感到困惑:)