SSH遠程連接不上linux


問題:ssh一直都可以遠程連接上linux,一段時間后突然ssh使用原本的IP連接不上linux,發生這種情況時的解決辦法

查看網絡配置文件中的IP有沒有改變。

先查看IPADDR有沒有改變,要是沒有被改變,那么繼續步驟2;要是發生了改變則將IPADDR改成之前的,然后進行步驟2。

[root@fanycb ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
BOOTPROTO=none
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
UUID="e57636db-84f8-4c15-af74-97d44a107fa2"
HWADDR=00:0C:29:14:5A:57
IPADDR=192.168.1.100
PREFIX=24
GATEWAY=192.168.1.1
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0"
[root@fanycb ~]# 

檢查sshd服務的狀態以及端口是否正常。

  • 查看sshd的22端口是否處於正常的LISTEN狀態,如果正常,則進行步驟3;如果不正常,則重新啟動sshd服務,然后進行步驟3;

    [root@fanycb ~]# netstat -nlp | grep :22
    tcp    0      0 0.0.0.0:22          0.0.0.0:*         LISTEN     2896/sshd           
    tcp    0      0 :::22                  :::*           LISTEN     2896/sshd  
    [root@fanycb ~]# 
    
  • 重啟sshd服務

    [root@fanycb ~]# /etc/init.d/sshd restart
    停止 sshd:                                                [確定]
    正在啟動 sshd:                                            [確定]
    [root@fanycb ~]# 
    

如果重啟失敗

  • 錯誤提示:--ssh:connect to host centos-py port 22: Connection refused

1)SSH服務未安裝

此時,采用在線安裝的方式就行下載安裝。

命令為:         yum -y install openssh-server;

然后啟動ssh服務:    service sshd start。

2)ssh服務對應22號端口未開啟

ss -lnt :使用該命令查詢22號端口是否開啟,如果為下圖所示為正常開啟,

img

否則要先開啟22號端口。

如果要修改端口,查看或編輯SSH服務配置文件,使用命令 vi /etc/ssh/sshd.config,進入 后把 port 后面默認的22端口改成別的端口即可(注意前面的#號要去掉)。

3)還有一種特殊情況:

以上兩點都沒有問題,並且執行ssh localhost命令也沒有問題,但執行 ssh hostname(hostname為你自己的主機名)命令時出錯。(此時,我們可以思考為什么用 localhost沒有問題,而用我們的主機名卻有問題?注意看下圖第一行配置,有個127.0.0.1到localhost的映射;於是,我們可以思考是否是因為我們沒有配置IP地址到我們的主機的映射呢?)

出現這種情況就是因為我們沒有在hosts文件中進行相應的配置,應該在其中加入hostname與IP地 址的映射關系:

vi /etc/hosts

img

最后,輸入ssh (我的hostname),然后出現了以下內容,表示我們的問題得到了解決。

img

磁盤文件系統分區導致ssh失敗問題

首先檢查IP

ifconfig -a

查看ip信息:(通過下圖可以看出是沒有run起來,連IPV4都沒有)

ip失敗

使用指令重啟下網絡,但是發現還是沒有效果:

service network restart

嘗試使用以下指令,顯示成功(可能在restart時候沒有自動起網絡成功),同時可以查看到對應的ip地址:

ifup eth0

但是在ssh這個服務器的時候還是ssh失敗:

systemctl status sshd.service #顯示狀態是inactive
systemctl restart sshd.service 

restart之后顯示authorization not available. check if polkit service is running,然后google了很久還是沒有用。嘗試start polkit service也顯示失敗還會自動reboot主機

最后看到一篇文章說有可能是掛載問題,然后使用blkid進行了以下的排查:

blkid [device]
#blkid
/dev/sda1: UUID="4d2cb34a-032f-409f-99da-8d89f9fc5afa" TYPE="ext4" 
/dev/sda2: UUID="1647f75f-d551-4581-8fe9-5f92fab6ac52" TYPE="ext4" 
/dev/sda3: UUID="14e24232-5281-49e9-ade9-3a16abab637e" TYPE="ext4" 
/dev/sda5: UUID="8b47d79d-6b7c-42d6-872a-d07b668a5a71" TYPE="swap"

然后查看/etc/fstab中掛載信息:

看到blkid和/etc/fstab沒有一一對應,因此修改/etc/fstab中的UUID讓blkid中和/etc/fstab文件中一一對應.

即修改/home對應的UUID,改完之后。

mount -a
reboot

重啟之后成功ssh到服務器。

檢查防火牆是否開啟。

如果防火牆是關閉的,則進行步驟4;如果防火牆沒有關閉,則 永久性的關閉它,然后進行步驟4。

[root@fanycb ~]# chkconfig iptables off            <====永久關閉防火牆
[root@fanycb ~]# /etc/init.d/iptables status         <====然后確認一下是否關閉了
iptables:未運行防火牆
[root@fanycb ~]# 

檢查SELinux是否開啟。

查看系統SELinux目前的狀態

[root@fanycb ~]# getenforce 
Disabled                         <====這是我系統上SELinux的狀態,這是關閉的
[root@fanycb ~]#

如果結果也是"disabled",那么一切的檢查就ok了,那就可以連接了

可如果結果是"Enforcing"活着"permissive",說明系統上的SELinux是開啟的,需要將它關閉。因為SELinux的開啟與關閉和兩個重要的配置文件有關,分別是/etc/selinux/config和/boot/grub/menu.lst,所以要關閉SELinux就需要修改這兩個文件,方法如下所示:

[root@fanycb ~]# cat /etc/selinux/config 

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
#SELINUX=enforcing
SELINUX=disabled                       <====將=號后改為disabled
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted [root@fanycb ~]# cat /boot/grub/menu.lst # grub.conf generated by anaconda## Note that you do not have to rerun grub after making changes to this file# NOTICE:  You have a /boot partition.  This means that#          all kernel and initrd paths are relative to /boot/, eg.#          root (hd0,0)#          kernel /vmlinuz-version ro root=/dev/sda5#          initrd /initrd-[generic-]version.img#boot=/dev/sdadefault=0timeout=5splashimage=(hd0,0)/grub/splash.xpm.gzhiddenmenutitle CentOS (2.6.32-279.el6.x86_64) root (hd0,0) kernel /vmlinuz-2.6.32-279.el6.x86_64 ro root=UUID=edc1b124-6bc5-4dbe-b2d4-88805da96d4d rd_NO_LUKS  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD crashkernel=128M LANG=zh_CN.UTF-8 rd_NO_LVM rd_NO_DM rhgb quiet selinux=0                     <====seliux=0 是添加上去的 initrd /initramfs-2.6.32-279.el6.x86_64.img[root@fanycb ~]# 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM