我怎么知道我的服务器是否有SSH?


10

我怎么知道我的服务器是否有SSH?反正有测试吗?

ssh 

在SuperUser上会更好吗?

Answers:


14

对于ssh客户端:ssh google.com; 如果显示未找到命令,则说明您尚未安装。

对于ssh服务器:ssh localhost; 如果它什么都不做,那么您就没有ssh服务器。

如果您正在运行debian / ubuntu:

apt-get install openssh-server

1
嗯,您的ssh服务器检查仅在ssh在其标准端口上运行时才有效
Mark Henderson

但是,如果他更改了端口,那么他会知道他正在运行ssh no:p?
卢卡斯·考夫曼,

假设他是设置服务器的那个人。可能是他继承的。
马克·亨德森

那时足够公平
卢卡斯·考夫曼

4

缺少公钥绝不是ssh命令失败的唯一方法,因此,这充其量只是一种近似。不过,这可能就足够了。

ssh $host "echo 2>&1" && echo $host OK || echo $host NOK

哦,更具体一点会很棒。


3

which ssh会告诉您是否已安装SSH客户端。但是您可能会问服务器是否允许您使用ssh连接到服务器,这时您正在寻找的是SSH(SSH守护进程)而不是SSH本身。如果已安装,则应能够以/etc/init.d/sshd startroot用户身份启动它。如果找不到相似名称的脚本赔率,则说明未安装。大多数发行版都应默认安装它。


2

另一个注意事项:

telnet <target> 22

第一行应该是纯文本,告诉您有关SSH版本的信息。

nmap也可以SERVICE/VERSION DETECTION-sV: Probe open ports to determine service/version info)。这可以帮助您找到配置错误的端口(typos隐藏在各处,我在21上运行ssh并关闭了与服务器的所有连接)。


为nmap +1,这可能是确定的最简单方法,但是它当然可以被防火墙阻止
Mark Henderson

2

相当老的了,但出于同样的原因我也刚打了这个帖子,接着是ArtB的帖子which ssh(对于我的默认Ubuntu安装,输出为/ usr / sbin / ssh),您也可以这样做which sshd,输出为/ usr / sbin / sshd

坦白地说,查看Linux是否ps aux正在运行的最好方法是不是?因此,在这种情况下ps aux | grep sshd,或者对于那些想要完善并隐藏grep命令的人ps aux | grep -v grep | grep sshd,在我刚刚安装了OpenSSH-Server的Ubuntu上,如下所示:

ps aux | grep -v grep | grep sshd root 5638 0.0 0.1 61372 5532 ? Ss 15:35 0:00 /usr/sbin/sshd -D


0

一种方法是检查是否已安装ssh RPM软件包

[sanyadav@localhost ~]$ **rpm -qa | grep -i ssh**

输出=>

libssh2-1.4.3-8.el7.x86_64
openssh-6.6.1p1-11.el7.x86_64
**openssh-server-6.6.1p1-11.el7.x86_64**
**openssh-clients-6.6.1p1-11.el7.x86_64**

此外,如果您想查看安装的ssh rpm软件包的版本

[sanyadav@localhost ~]$rpm -qi openssh-clients-6.6.1p1-11.el7.x86_64

输出=>

Name        : openssh-clients
Version     : 6.6.1p1
Release     : 11.el7
Architecture: x86_64
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.