阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

SSH连接不上Linux主机的解决方法

145次阅读
没有评论

共计 12068 个字符,预计需要花费 31 分钟才能阅读完成。

一、CentOS 之 SSH 的安装与配置

SSH 为 Secure Shell 的缩写,由 IETF 的网络工作小组(Network Working Group)所制定 SSH 为建立在应用层和传输层基础上的安全协议。

传统的网络服务程序,如 FTP、POP 和 Telnet 其本质上都是不安全的。
因为它们在网络上用明文传送数据、用户帐号和用户口令,很容易受到中间人(man-in-the-middle)攻击方式的攻击。
存在另一个人或者一台机器冒充真正的服务器接收用户传给服务器的数据,然后再冒充用户把数据传给真正的服务器。

而 SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。透过 SSH 可以对所有传输的数据进行加密,也能够防止 DNS 欺骗和 IP 欺骗。

安装 SSH
[root@linuxidc ~]# yum install ssh
启动 SSH
[root@linuxidc ~]# service sshd start
设置开机运行
[root@linuxidc ~]# chkconfig sshd on

SSH 相关配置文件的修改

首先修改 SSH 的配置文件,用 vim 打开 SSH 的配置文件,如下:

[root@linuxidc ~]# vim /etc/ssh/sshd_config
#Protocol 2,1                             ← 找到此行将行头“#”删除,再将行末的“,1”删除,只允许 SSH2 方式的连接

Protocol 2                                 ← 修改后变为此状态,仅使用 SSH2

#ServerKeyBits 768                   ← 找到这一行,将行首的“#”去掉,并将 768 改为 1024

ServerKeyBits 1024                   ← 修改后变为此状态,将 ServerKey 强度改为 1024 比特

#PermitRootLogin yes               ← 找到这一行,将行首的“#”去掉,并将 yes 改为 no

PermitRootLogin no                 ← 修改后变为此状态,不允许用 root 进行登录

#PasswordAuthentication yes       ← 找到这一行,将 yes 改为 no

PasswordAuthentication no         ← 修改后变为此状态,不允许密码方式的登录
#PermitEmptyPasswords no   ← 找到此行将行头的“#”删除,不允许空密码登录

PermitEmptyPasswords no     ← 修改后变为此状态,禁止空密码进行登录

然后保存并退出

因为我们只想让 SSH 服务为管理系统提供方便,所以在不通过外网远程管理系统的情况下
只允许内网客户端通过 SSH 登录到服务器,以最大限度减少不安全因素

修改屏蔽规则,在文尾添加相应行,设置方法如下:

[root@linuxidc ~]# vim /etc/hosts.deny
# hosts.deny This file describes the names of the hosts which are
# *not* allowed to use the local INET services, as decided
# by the‘/usr/sbin/tcpd’server.
#
# The portmap line is redundant, but it is left to remind you that
# the new secure portmap uses hosts.deny and hosts.allow. In particular
# you should know that NFS uses portmap!
sshd: ALL                                               ← 添加这一行,屏蔽来自所有的 SSH 连接请求

[root@linuxidc ~]# vim /etc/hosts.allow         ← 修改允许规则,在文尾添加相应行
#
# hosts.allow This file describes the names of the hosts which are
# allowed to use the local INET services, as decided
# by the‘/usr/sbin/tcpd’server.
#
sshd: 192.168.0.                                       ← 添加这一行,只允许来自内网的 SSH 连接请求

在修改完 SSH 的配置文件后,需要重新启动 SSH 服务才能使新的设置生效
[root@linuxidc ~]# service sshd restart
Stopping sshd:                                            [OK]
Starting sshd:                                              [OK]

这时,在远程终端(自用 PC 等)上,用 SSH 客户端软件以正常的密码的方式是无法登录服务器的
为了在客户能够登录到服务器,我们接下来建立 SSH 用的公钥与私钥,以用于客户端以“钥匙”的方式登录 SSH 服务器

SSH2 的公钥与私钥的建立:

登录为一个一般用户,基于这个用户建立公钥与私钥[root@linuxidc ~]# su – linuxidc
[root@test1 ~]$ ssh-keygen -t rsa                                     ← 建立公钥与私钥
Generating public/private rsa key pair.
Enter file in which to save the key (/home/kaz/.ssh/id_rsa): ← 钥匙的文件名,这里保持默认直接回车
Created directory‘/home/kaz/.ssh’
Enter passphrase (empty for no passphrase):                     ← 输入口令
Enter same passphrase again:                                           ← 再次输入口令
Your identification has been saved in /home/kaz/.ssh/id_rsa.
Your public key has been saved in /home/kaz/.ssh/id_rsa.pub.
The key fingerprint is:
tf:rs:e3:7s:28:59:5s:93:fe:33:84:01:cj:65:3b:8e centospub@sample.centospub.com

然后确认一下公钥与密钥的建立,以及对应于客户端的一些处理

[root@linuxidc ~]$ cd ~/.ssh                                                           ← 进入用户 SSH 配置文件的目录[root@linuxidc ~]$ ls -l                                                                 ← 列出文件
-rw——- 1 centospub centospub 951 Sep 4 19:22 id_rsa               ← 确认私钥已被建立
-rw-r–r– 1 centospub centospub 241 Sep 4 19:22 id_rsa.pub           ← 确认公钥已被建立
[root@linuxidc .ssh]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys ← 公钥内容输出到相应文件中
[root@linuxidc .ssh]$ rm -f ~/.ssh/id_rsa.pub                                   ← 删除原来的公钥文件
[root@linuxidc .ssh]$ chmod 400 ~/.ssh/authorized_keys                   ← 将新建立的公钥文件属性设置为 400

然后,将私钥通过安全的方式转移到欲通过 SSH 连接到服务器的 PC 上。这里,以通过 3.5 寸磁盘为介质为例:
[root@linuxidc .ssh]$ exit                                                             ← 退出一般用户的登录(返回 root 的登录)[root@linuxidc ~]# mount /mnt/floppy/                                           ← 加载软盘驱动器
[root@linuxidc ~]# mv /home/centospub/.ssh/id_rsa /mnt/floppy/       ← 将刚刚建立的私钥移动到软盘
[root@linuxidc ~]# umount /mnt/floppy/                                         ← 卸载软盘驱动器

二、比较流行的几款 SSH 客户端工具

作为一个 Windows 操作系统用户,如果想要连接 Linux 服务器来进行文件之间的传送,那么需要一个 Secure Shell 软件(简称 SSH 的)实际上,SSH 是一个网络协议,允许通过网络连接到 Linux 和 Unix 服务器;SSH 使用公钥加密来认证远程的计算机。通常有多种途径使用 SSH,自动连接或是使用密码认证登录。

Putty
Putty 是最有名的 SSH 和 telnet 客户端,由 Simon Tatham 为 Windows 平台开发。
Putty 是一款开源软件,提供可用的源代码并有一批志愿者进行开发和支持连接 Linux 服务器:Win 免费 SSH 客户端工具。
Putty 易于安装和使用,通常大部分的配置选项不需要修改,用户只需要输入少量基本的参数,就可以开始很简单地建立连接会话。

SecureCRT
SecureCRT 这款 SSH 客户端软件同时具备了终端仿真器和文件传输功能

SSH 连接不上 Linux 主机的解决方法

FileZilla
FileZilla 是 Windows 上使用最多的免费 ftp 客户端。它是一款遵循 GNU 公共许可证发布的开源软件。
FileZilla 客户端支持多种平台(Windows、Linux 及 Mac)作为 FTP Server,FileZilla 只提供 Windows 版本。
由于 Filezilla 是开源软件,因此高级用户可以根据自己的需要查看源码并进行修改,对所有用户,FileZilla 让免费、强大和易用的文件传输成为可能。喜欢图形界面的用户可以轻易地凭感觉就学会使用,
FileZilla 不支持 CLI(命令行界面),
FileZilla 支持 FTP、SSL/TLS 加密的 FTP(FTPS)和 SSH FTP(SFTP),
用户可以利用它们进行可靠的安全文件传输。
FileZilla 有很多有意思的特性,包括支持文件续传和大文件(>4G)传输
当然还有很多其它特性让 FileZilla 成为用户数最多的客户端
比如:支持 ipv6、支持拖拽操作、支持 http、socks5 和 ftp-proxy
支持远程文件编辑以及很多其它很有意思的特性
FileZilla 操作非常灵活且易于使用,可以同时发送、接收多个文件
如今,这些特性已经让 FileZilla 被公认为是最强大的文件传输工具

Ubuntu 12.10 下安装 FileZilla 3.5.3 见 http://www.linuxidc.com/Linux/2012-11/73951.htm

FileZilla 通过 root 账户远程连接管理 Ubuntu Server 服务器文件 http://www.linuxidc.com/Linux/2016-12/138760.htm

FileZilla Server 0.9.45 架设 FTP 服务器图文教程 http://www.linuxidc.com/Linux/2014-06/102840.htm

FileZilla Client 的详细介绍:请点这里
FileZilla Client 的下载地址:请点这里

WinSCP
WINSCP 是一款 Windows 平台的免费开源 FTP 客户端。WinSCP 不提供 ftp server 版本
支持的传输协议有 FTP、SFTP 和 SSH,同时也支持 SCP(安全拷贝协议)
WinSCP 的图形化用户界面为终端用户提供了直觉化的界面,因而更易于使用
同时 WinSCP 也为习惯了终端操作的用户提供了强大的命令行界面
WinSCP 的脚本和自动化特性使得任务自动化成为可能
同时也支持拖拽文件进行传输,还有其他的 Windows 集成特性
例如桌面、快捷启动图标,文件浏览器的“发送到”菜单等等
WinSCP 在其它操作系统上没有提供类似的功能

SSH 连接不上 Linux 主机的解决方法

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2017-05/143740p2.htm

XShell

我们来看下 XShell 这款工具,它可以用来远程操控 Linux 系统,所以我们可以在 Windows 系统中,安装这个软件用来打开 Linux 终端。

可以参考以下文章:

Xshell 实现 Windows 上传文件到 Linux 主机  http://www.linuxidc.com/Linux/2015-05/117975.htm

Xshell 登录 CentOS 6.3 中文乱码的解决 http://www.linuxidc.com/Linux/2013-06/86600.htm

VirtualBox4.12 文本安装 CentOS 5.4 以及 Xshell 连接教程 PDF http://www.linuxidc.com/Linux/2013-06/85575.htm

Xshell 连接 CentOS6.5 iptables 或 ls 输出乱码 http://www.linuxidc.com/Linux/2014-06/103725.htm

VMware Linux 使用 Xshell 登陆 http://www.linuxidc.com/Linux/2012-06/62546.htm

使用 Xshell 密钥认证机制远程登录 Linux http://www.linuxidc.com/Linux/2015-03/114947.htm

VMware 下 Ubuntu 虚拟机 NAT 模式连接 Xshell  http://www.linuxidc.com/Linux/2016-09/135366.htm

Xshell 连接 CentOS 7 与 Ubuntu Server  http://www.linuxidc.com/Linux/2017-03/141333.htm

三、SSH 连不上的各种联想过程

之前在公司工作的时候,遇到这样一种情况:

由于错误操作,之前的虚拟机以及其中的系统都一去不返了

后来重新安装,进行 ssh 连接,发现远程连接竟然无法连接,提示 22 端口连接失败,但是可以 ping 通

解决这个问题花了我不少时间去查资料,网上写的解决方法也是五花八门

经过各种尝试和联想的过程,最终总算解决了,现在想分享出来和大家一起学习

猜测原因大概有以下几种情况:

IP 配置错误,或者配置完成没有重启网络连接,但是既然可以 ping 通应该不是这个问题

但是为了保险起见,还是重启了一下,不过重启之后依旧不奏效

关闭防火墙和 selinux

[root@linuxidc ~]# setenforce 0

[root@linuxidc ~]# service iptables stop

通过命令查看 RedHat 防火墙:

[root@linuxidc ~]# service  iptables status

iptables: Firewall is not running.

重启 SSH 服务

以 root 用户登录 Linux,打开终端,运行:

[root@linuxidc ~]# service sshd start

[root@linuxidc ~]# service sshd restart

Stopping sshd:                                            [OK]

Starting sshd:                                              [OK]

检查是否安装了 ssh-server 服务

安装的 redhat 最小化安装字符界面,默认是没有安装 ssh-server 服务的

[root@linuxidc ~]# yum  install openssh-server* -y                                        #进行安装 ssh-server 服务

[root@linuxidc ~]# netstat  -tclnp        | grep  sshd                                        #查看 sshd 端口是否处于监听状态

发现 sshd  22 端口已是监听状态,再次使用 xshell 或者 xftp 连接发现成功连接

检查 SSH 服务配置文件

补充一下,Linux 的某些版本,是不允许 root 用户远程登陆的,需要修改设置

[root@linuxidc ~]# vim /etc/ssh/sshd_config

PermitRootLogin no

这就不允许 root 用户远程登录,要修改成 PermitRootLogin yes 并重启 sshd 服务才行

[root@linuxidc ~]# vim /etc/ssh/sshd_config

PermitRootLogin yes

[root@linuxidc ~]# service sshd restart

设置网络连接方式

如果还 ping 不同,需要在虚拟机设置中,将 NetworkAdapter 设置成 ”Bridged”(桥接),因为默认是“NAT”

SSH 连接不上 Linux 主机的解决方法

查看虚拟网络编辑器配置

SSH 连接不上 Linux 主机的解决方法

在 VMware 虚拟机虚拟网络编辑器设置好了网关、子网 IP、DNS 之后

正常情况下,打开 VMnet8 就可以看到 IPv4 地址和上面配置的子网 IP 相同

我这里发现 VMnet8 的 IP 已经不见了,所以去虚拟机网络编辑器重新设置就好了

SSH 连接不上 Linux 主机的解决方法

总结:

发现问题后,正常思路应该先看根源,这次问题发现就有点走冤枉路了

首先不看是否已经存在这个东西便去看是否正确设置,耽误时间,希望大家以后都注意一下.

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-05/143740.htm

一、CentOS 之 SSH 的安装与配置

SSH 为 Secure Shell 的缩写,由 IETF 的网络工作小组(Network Working Group)所制定 SSH 为建立在应用层和传输层基础上的安全协议。

传统的网络服务程序,如 FTP、POP 和 Telnet 其本质上都是不安全的。
因为它们在网络上用明文传送数据、用户帐号和用户口令,很容易受到中间人(man-in-the-middle)攻击方式的攻击。
存在另一个人或者一台机器冒充真正的服务器接收用户传给服务器的数据,然后再冒充用户把数据传给真正的服务器。

而 SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。透过 SSH 可以对所有传输的数据进行加密,也能够防止 DNS 欺骗和 IP 欺骗。

安装 SSH
[root@linuxidc ~]# yum install ssh
启动 SSH
[root@linuxidc ~]# service sshd start
设置开机运行
[root@linuxidc ~]# chkconfig sshd on

SSH 相关配置文件的修改

首先修改 SSH 的配置文件,用 vim 打开 SSH 的配置文件,如下:

[root@linuxidc ~]# vim /etc/ssh/sshd_config
#Protocol 2,1                             ← 找到此行将行头“#”删除,再将行末的“,1”删除,只允许 SSH2 方式的连接

Protocol 2                                 ← 修改后变为此状态,仅使用 SSH2

#ServerKeyBits 768                   ← 找到这一行,将行首的“#”去掉,并将 768 改为 1024

ServerKeyBits 1024                   ← 修改后变为此状态,将 ServerKey 强度改为 1024 比特

#PermitRootLogin yes               ← 找到这一行,将行首的“#”去掉,并将 yes 改为 no

PermitRootLogin no                 ← 修改后变为此状态,不允许用 root 进行登录

#PasswordAuthentication yes       ← 找到这一行,将 yes 改为 no

PasswordAuthentication no         ← 修改后变为此状态,不允许密码方式的登录
#PermitEmptyPasswords no   ← 找到此行将行头的“#”删除,不允许空密码登录

PermitEmptyPasswords no     ← 修改后变为此状态,禁止空密码进行登录

然后保存并退出

因为我们只想让 SSH 服务为管理系统提供方便,所以在不通过外网远程管理系统的情况下
只允许内网客户端通过 SSH 登录到服务器,以最大限度减少不安全因素

修改屏蔽规则,在文尾添加相应行,设置方法如下:

[root@linuxidc ~]# vim /etc/hosts.deny
# hosts.deny This file describes the names of the hosts which are
# *not* allowed to use the local INET services, as decided
# by the‘/usr/sbin/tcpd’server.
#
# The portmap line is redundant, but it is left to remind you that
# the new secure portmap uses hosts.deny and hosts.allow. In particular
# you should know that NFS uses portmap!
sshd: ALL                                               ← 添加这一行,屏蔽来自所有的 SSH 连接请求

[root@linuxidc ~]# vim /etc/hosts.allow         ← 修改允许规则,在文尾添加相应行
#
# hosts.allow This file describes the names of the hosts which are
# allowed to use the local INET services, as decided
# by the‘/usr/sbin/tcpd’server.
#
sshd: 192.168.0.                                       ← 添加这一行,只允许来自内网的 SSH 连接请求

在修改完 SSH 的配置文件后,需要重新启动 SSH 服务才能使新的设置生效
[root@linuxidc ~]# service sshd restart
Stopping sshd:                                            [OK]
Starting sshd:                                              [OK]

这时,在远程终端(自用 PC 等)上,用 SSH 客户端软件以正常的密码的方式是无法登录服务器的
为了在客户能够登录到服务器,我们接下来建立 SSH 用的公钥与私钥,以用于客户端以“钥匙”的方式登录 SSH 服务器

SSH2 的公钥与私钥的建立:

登录为一个一般用户,基于这个用户建立公钥与私钥[root@linuxidc ~]# su – linuxidc
[root@test1 ~]$ ssh-keygen -t rsa                                     ← 建立公钥与私钥
Generating public/private rsa key pair.
Enter file in which to save the key (/home/kaz/.ssh/id_rsa): ← 钥匙的文件名,这里保持默认直接回车
Created directory‘/home/kaz/.ssh’
Enter passphrase (empty for no passphrase):                     ← 输入口令
Enter same passphrase again:                                           ← 再次输入口令
Your identification has been saved in /home/kaz/.ssh/id_rsa.
Your public key has been saved in /home/kaz/.ssh/id_rsa.pub.
The key fingerprint is:
tf:rs:e3:7s:28:59:5s:93:fe:33:84:01:cj:65:3b:8e centospub@sample.centospub.com

然后确认一下公钥与密钥的建立,以及对应于客户端的一些处理

[root@linuxidc ~]$ cd ~/.ssh                                                           ← 进入用户 SSH 配置文件的目录[root@linuxidc ~]$ ls -l                                                                 ← 列出文件
-rw——- 1 centospub centospub 951 Sep 4 19:22 id_rsa               ← 确认私钥已被建立
-rw-r–r– 1 centospub centospub 241 Sep 4 19:22 id_rsa.pub           ← 确认公钥已被建立
[root@linuxidc .ssh]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys ← 公钥内容输出到相应文件中
[root@linuxidc .ssh]$ rm -f ~/.ssh/id_rsa.pub                                   ← 删除原来的公钥文件
[root@linuxidc .ssh]$ chmod 400 ~/.ssh/authorized_keys                   ← 将新建立的公钥文件属性设置为 400

然后,将私钥通过安全的方式转移到欲通过 SSH 连接到服务器的 PC 上。这里,以通过 3.5 寸磁盘为介质为例:
[root@linuxidc .ssh]$ exit                                                             ← 退出一般用户的登录(返回 root 的登录)[root@linuxidc ~]# mount /mnt/floppy/                                           ← 加载软盘驱动器
[root@linuxidc ~]# mv /home/centospub/.ssh/id_rsa /mnt/floppy/       ← 将刚刚建立的私钥移动到软盘
[root@linuxidc ~]# umount /mnt/floppy/                                         ← 卸载软盘驱动器

二、比较流行的几款 SSH 客户端工具

作为一个 Windows 操作系统用户,如果想要连接 Linux 服务器来进行文件之间的传送,那么需要一个 Secure Shell 软件(简称 SSH 的)实际上,SSH 是一个网络协议,允许通过网络连接到 Linux 和 Unix 服务器;SSH 使用公钥加密来认证远程的计算机。通常有多种途径使用 SSH,自动连接或是使用密码认证登录。

Putty
Putty 是最有名的 SSH 和 telnet 客户端,由 Simon Tatham 为 Windows 平台开发。
Putty 是一款开源软件,提供可用的源代码并有一批志愿者进行开发和支持连接 Linux 服务器:Win 免费 SSH 客户端工具。
Putty 易于安装和使用,通常大部分的配置选项不需要修改,用户只需要输入少量基本的参数,就可以开始很简单地建立连接会话。

SecureCRT
SecureCRT 这款 SSH 客户端软件同时具备了终端仿真器和文件传输功能

SSH 连接不上 Linux 主机的解决方法

FileZilla
FileZilla 是 Windows 上使用最多的免费 ftp 客户端。它是一款遵循 GNU 公共许可证发布的开源软件。
FileZilla 客户端支持多种平台(Windows、Linux 及 Mac)作为 FTP Server,FileZilla 只提供 Windows 版本。
由于 Filezilla 是开源软件,因此高级用户可以根据自己的需要查看源码并进行修改,对所有用户,FileZilla 让免费、强大和易用的文件传输成为可能。喜欢图形界面的用户可以轻易地凭感觉就学会使用,
FileZilla 不支持 CLI(命令行界面),
FileZilla 支持 FTP、SSL/TLS 加密的 FTP(FTPS)和 SSH FTP(SFTP),
用户可以利用它们进行可靠的安全文件传输。
FileZilla 有很多有意思的特性,包括支持文件续传和大文件(>4G)传输
当然还有很多其它特性让 FileZilla 成为用户数最多的客户端
比如:支持 ipv6、支持拖拽操作、支持 http、socks5 和 ftp-proxy
支持远程文件编辑以及很多其它很有意思的特性
FileZilla 操作非常灵活且易于使用,可以同时发送、接收多个文件
如今,这些特性已经让 FileZilla 被公认为是最强大的文件传输工具

Ubuntu 12.10 下安装 FileZilla 3.5.3 见 http://www.linuxidc.com/Linux/2012-11/73951.htm

FileZilla 通过 root 账户远程连接管理 Ubuntu Server 服务器文件 http://www.linuxidc.com/Linux/2016-12/138760.htm

FileZilla Server 0.9.45 架设 FTP 服务器图文教程 http://www.linuxidc.com/Linux/2014-06/102840.htm

FileZilla Client 的详细介绍:请点这里
FileZilla Client 的下载地址:请点这里

WinSCP
WINSCP 是一款 Windows 平台的免费开源 FTP 客户端。WinSCP 不提供 ftp server 版本
支持的传输协议有 FTP、SFTP 和 SSH,同时也支持 SCP(安全拷贝协议)
WinSCP 的图形化用户界面为终端用户提供了直觉化的界面,因而更易于使用
同时 WinSCP 也为习惯了终端操作的用户提供了强大的命令行界面
WinSCP 的脚本和自动化特性使得任务自动化成为可能
同时也支持拖拽文件进行传输,还有其他的 Windows 集成特性
例如桌面、快捷启动图标,文件浏览器的“发送到”菜单等等
WinSCP 在其它操作系统上没有提供类似的功能

SSH 连接不上 Linux 主机的解决方法

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2017-05/143740p2.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计12068字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中