題 SSH:連接到主機localhost端口22:連接被拒絕


在debian kali中,我嘗試連接ssh並收到以下錯誤:

SSH:連接到主機localhost端口22:連接被拒絕

背景 :

我試圖在debian中連接ssh,我正在使用kali 2.0 sana

我嘗試過/做了什麼:

`apt-get install openssh-server`

安裝openssh-server及其uptodate

查詢服務 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

現在再次嘗試通過'sh 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 但又得到了錯誤。

請指導我在哪裡錯過了這個部分?我怎樣才能連接它?


4
2017-09-23 13:36


起源


您是否介意嘗試使用非root用戶並告知發生了什麼?你的sshd文件也只是那些行嗎?嘗試添加:“PermitRootLogin yes” - SOMN
你能運行“netstat -an | grep 22”並編輯你的問題以包含輸出嗎? - Kenster
@Glaudio是的兄弟我已經嘗試過了,但連接被拒絕了 - BlueBerry - Vignesh4303
@kenster添加了它的輸出兄弟 - BlueBerry - Vignesh4303
看看你自己的帖子。看看開頭的 sshd_config。也許這不是真的在文件中,但如果是,那就是問題。 - David Schwartz


答案:


您的 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 傾聽每個人的意見


12
2017-10-01 05:01



這應該工作。雖然,示例sshd_config可能比答案所需的時間長。只需確保它指定“端口22”。或者,您可以通過命令行覆蓋,這對於基本測試可能更簡單。只需運行:“$(sshd)-p 22”(不帶引號)。 (如果需要,在該命令行之前添加“sudo”。) - TOOGAM
實際上,這不僅僅是需要的,我只是把它全部放在一邊,因為它是一個“標準”SSH配置,另外還包括OP要求的安全措施;但你是對的,通常Port指令應該足以讓它工作。 - nKn


我看不出你是否真的添加了這一行,或者取消註釋了它: 港口22

如果sshd_config中未指定端口,則sshd將不會偵聽任何端口。鑑於netstat的輸出,這可能是個問題。


3
2017-10-02 17:17



“語法修正”很嚴厲,但似乎在精神內。 sshd_config的OpenBSD手冊頁 是權威的(因為OpenBSD項目發布了OpenSSH和Portable OpenSSH)。手冊頁上寫著“默認值為22”。我現在有點忙著要測試這個來驗證,但我認為這個信息(“sshd不會監聽任何端口。”)是不正確的。 - TOOGAM
是的,默認值是22,但是,嘗試從sshd_config中刪除端口條目,然後查看sshd使用netstat監聽的端口。 - Jasper Kips
我在寫答案之前先測試了它。在Ubuntu上,sshd實際上不會監聽任何端口,連接是不可能的,但守護程序的狀態就像問題的作者所指出的那樣。 - Jasper Kips


首先 確保您的root帳戶已設置密碼 如果root沒有密碼,你可以 sudo passwd root 然後輸入root的新密碼。

然後你可以使用SSH進行SSH -v 詳細輸出的選項:

ssh root@localhost -v

如果連接仍然被拒絕,請發布輸出 ssh root@localhost -v 命令。


2
2017-10-02 04:53





腳步:

我們假設服務器1的IP是 192.x.x.1 服務器2的IP是 192.x.x.2

在服務器1上:

ssh-keygen -t rsa
cd .ssh
ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.x.x.2

現在 ssh server2.com 要么 ssh 192.x.x.2

如果您收到連接錯誤(SSH ::),然後檢查 /etc/hosts 兩個服務器上的文件必須具有SERVER1和SERVER2的IP,如果它不包含兩個服務器的條目,則更新此 /etc/hosts 在具有IP地址主機名等的兩台服務器上的文件,然後檢查您的問題是否將得到解決。

我得到了同樣的錯誤,它通過修改兩個主機文件中的IP來解決。


0
2018-04-27 10:04



OP正試圖連接到 localhost,不是另一台服務器;問題是連接被拒絕,而不是名稱查找失敗。 - bertieb
即使有了這個編輯,它仍然沒有解決這個問題(OP沒有 ssh 服務運行!),它有一個接受的答案。 - bertieb


今天發生在我身上。根據這個 鏈接,“Kali Linux沒有啟用SSH”


0
2017-09-14 08:51