在 debian kali 中我尝试连接 ssh 并收到以下错误:
SSH:连接到主机本地主机端口 22:连接被拒绝
背景 :
我尝试在 Debian 中连接 ssh,我使用的是 kali 2.0 sana
我已尝试/做过的事情:
`apt-get install openssh-server`
安装了 openssh-server 及其最新版本
查询的服务ssh status
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled)
Active: active (running) since Wed 2015-09-23 17:20:36 IST; 36min ago
Main PID: 1594 (sshd)
CGroup: /system.slice/ssh.service
└─1594 /usr/sbin/sshd -D
重新配置 dpkg-reconfigure openssh-server 也成功了
现在我尝试连接ssh root@localhost
,需要 root@localhost 密码,所以我所做的是
vi /etc/ssh/sshd_config
并添加拒绝 root 登录的命令:
我的 sshd_config 如下:
What ports, IPs and protocols we listen for Port 22
#Use these options to restrict which interfaces/protocols sshd will bind to
#ListenAddress ::
#ListenAddress 0.0.0.0 Protocol 2
# HostKeys for protocol version 2 HostKey /etc/ssh/ssh_host_rsa_key HostKey /etc/ssh/ssh_host_dsa_key HostKey /etc/ssh/ssh_host_ecdsa_key HostKey /etc/ssh/ssh_host_ed25519_key
#Privilege Separation is turned on for security UsePrivilegeSeparation yes
现在再次尝试通过“ssh root@localhost”连接 ssh,但没有成功connect to host localhost port 22: Connection refused
我认为我iptables
可能会阻止它,因此将其配置为:
vim /root/firewall.rules
root@vignesh:~# iptables-save > /root/firewall.rules
root@vignesh:~# iptables -X
root@vignesh:~# iptables -t nat -F
root@vignesh:~# iptables -t nat -X
root@vignesh:~# iptables -t mangle -F
root@vignesh:~# iptables -t mangle -X
root@vignesh:~# iptables -P INPUT ACCEPT
root@vignesh:~# iptables -P FORWARD ACCEPT
root@vignesh:~# iptables -P OUTPUT ACCEPT
root@vignesh:~# iptables-save > /root/firewall.rules
我问iptables-save
# Generated by iptables-save v1.4.21 on Wed Sep 23 18:50:34 2015
*mangle
:PREROUTING ACCEPT [41217:4171959]
:INPUT ACCEPT [27727:3255690]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1834:219528]
:POSTROUTING ACCEPT [1835:219654]
COMMIT
# Completed on Wed Sep 23 18:50:34 2015
# Generated by iptables-save v1.4.21 on Wed Sep 23 18:50:34 2015
*nat
:PREROUTING ACCEPT [15456:1179155]
:INPUT ACCEPT [1858:255303]
:OUTPUT ACCEPT [223:14078]
:POSTROUTING ACCEPT [223:14078]
COMMIT
# Completed on Wed Sep 23 18:50:34 2015
# Generated by iptables-save v1.4.21 on Wed Sep 23 18:50:34 2015
*filter
:INPUT ACCEPT [26756:3173280]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1775:215770]
COMMIT
根据评论检查
root@vignesh:~# netstat -an | grep 22
tcp 0 0 10.100.8.40:54036 216.58.220.46:80 ESTABLISHED
tcp 0 0 10.100.8.40:41573 216.58.220.14:80 ESTABLISHED
unix 3 [ ] STREAM CONNECTED 17722 @/tmp/dbus-JUNz9GwSon
unix 3 [ ] STREAM CONNECTED 13422
unix 3 [ ] STREAM CONNECTED 17224
unix 3 [ ] STREAM CONNECTED 17422
unix 2 [ ] DGRAM 9222
unix 3 [ ] STREAM CONNECTED 17221 /var/run/NetworkManager/private
unix 3 [ ] STREAM CONNECTED 17225 /var/run/NetworkManager/private
unix 3 [ ] STREAM CONNECTED 17229
unix 3 [ ] STREAM CONNECTED 17220
现在我再次尝试ssh root@localhost
但仍然出现错误。
请告诉我我遗漏了哪个部件?我该如何连接它?
答案1
您的netstat
输出显示没有进程正在监听端口22
,这可以解释为什么您Connection refused
在尝试 SSH 时会得到一个。
status
关于守护进程的信息显示sshd
正在运行,但是没有与之关联的监听端口(或似乎没有)。
此外,正如评论中所说,您的sshd_config
文件似乎不正确。您说要禁用 root 登录,因此我将为您的 SSH 守护程序提出一个配置建议。
编辑该/etc/ssh/sshd_config
文件并将以下内容放入其中:
Port 22
Protocol 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
UsePrivilegeSeparation yes
KeyRegenerationInterval 3600
ServerKeyBits 1024
SyslogFacility AUTH
LogLevel INFO
LoginGraceTime 120
PermitRootLogin no
StrictModes yes
RSAAuthentication yes
PubkeyAuthentication yes
IgnoreRhosts yes
RhostsRSAAuthentication no
HostbasedAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no
X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
AcceptEnv LANG LC_*
Subsystem sftp /usr/lib/openssh/sftp-server
UsePAM yes
ClientAliveInterval 30
ClientAliveCountMax 99999
如果您担心安全问题,您可以限制 SSH 仅供您想要的用户使用。例如,如果您想限制只有用户vignesh
可以使用 SSH,您可以添加另一个指令,如下所示:
AllowUsers vignesh
之后,只需重新启动sshd
服务即可。完成后,如果您运行,netstat -atpn | grep 22
您应该会看到端口22
正在监听所有人。
答案2
我看不出您是否真的添加了此行,或者取消了对它的注释: 端口 22
如果 sshd_config 中未指定端口,sshd 将不会监听任何端口。根据 netstat 的输出,这可能是问题所在。
答案3
首先确保你的 root 账户已设置密码
如果 root 没有密码,您可以sudo passwd root
输入 root 的新密码。
-v
然后您可以使用详细输出选项通过 SSH 进行登录:
ssh root@localhost -v
如果连接仍然被拒绝,请发布ssh root@localhost -v
命令的输出。
答案4
今天我突然想到了这一点。根据这个关联, “Kali Linux 没有启用 SSH”