Linux SSH 连接不上的各种联想

一、CentOS之SSH的安装与配置

SSH 为 Secure Shell 的缩写,由 IETF 的网络工作小组

(Network Working Group)所制定SSH 为建立在应用层和传输层基础上的安全协议

传统的网络服务程序,如FTP、POP和Telnet其本质上都是不安全的

因为它们在网络上用明文传送数据、用户帐号和用户口令,很容易受到中间人(man-in-the-middle)攻击方式的攻击

存在另一个人或者一台机器冒充真正的服务器接收用户传给服务器的数据,然后再冒充用户把数据传给真正的服务器

而 SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止

远程管理过程中的信息泄露问题。透过 SSH 可以对所有传输的数据进行加密,也能够防止 DNS 欺骗和 IP 欺骗

安装SSH

[[email protected] ~]# yum install ssh

启动SSH

[[email protected] ~]# service sshd start

设置开机运行

[[email protected] ~]# chkconfig sshd on

SSH相关配置文件的修改


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

[[email protected] ~]# 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登录到服务器,以最大限度减少不安全因素

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

[[email protected] ~]# 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连接请求

[[email protected]test1 ~]# 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服务才能使新的设置生效

[[email protected] ~]# service sshd restart

Stopping sshd:                                            [  OK  ]

Starting sshd:                                              [  OK  ]

这时,在远程终端(自用PC等)上,用SSH客户端软件以正常的密码的方式是无法登录服务器的

为了在客户能够登录到服务器,我们接下来建立SSH用的公钥与私钥,以用于客户端以“钥匙”的方式登录SSH服务器

SSH2的公钥与私钥的建立:


登录为一个一般用户,基于这个用户建立公钥与私钥

[[email protected] ~]# su - test1

[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 [email protected]

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

[[email protected] ~]$ cd ~/.ssh                                                           ← 进入用户SSH配置文件的目录

[[email protected] ~]$ 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           ← 确认公钥已被建立

[[email protected] .ssh]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys  ← 公钥内容输出到相应文件中

[[email protected] .ssh]$ rm -f ~/.ssh/id_rsa.pub                                    ← 删除原来的公钥文件

[[email protected] .ssh]$ chmod 400 ~/.ssh/authorized_keys                   ← 将新建立的公钥文件属性设置为400

然后,将私钥通过安全的方式转移到欲通过SSH连接到服务器的PC上。这里,以通过3.5寸磁盘为介质为例:

[root@test1 .ssh]$ exit                                                               ← 退出一般用户的登录(返回root的登录)

[[email protected]test1 ~]# mount /mnt/floppy/                                            ← 加载软盘驱动器

[[email protected]test1 ~]# mv /home/centospub/.ssh/id_rsa /mnt/floppy/        ← 将刚刚建立的私钥移动到软盘

[[email protected]test1 ~]# umount /mnt/floppy/                                          ← 卸载软盘驱动器

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

作为一个Windows操作系统用户,如果想要连接Linux服务器来进行文件之间的传送

那么需要一个Secure Shell软件(简称SSH的)实际上,SSH是一个网络协议,允许通过网络连接到Linux

和Unix服务器;SSH使用公钥加密来认证远程的计算机。通常有多种途径使用SSH,自动连接或是使用密码认证登录

Putty

Putty是最有名的SSH和telnet客户端,由Simon Tatham为Windows平台开发

Putty是一款开源软件,提供可用的源代码并有一批志愿者进行开发和支持

Putty易于安装和使用,通常大部分的配置选项不需要修改

用户只需要输入少量基本的参数,就可以开始很简单地建立连接会话

SecureCRT

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

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 被公认为是最强大的文件传输工具

WinSCP

WINSCP 是一款 Windows 平台的免费开源 FTP 客户端。WinSCP 不提供 ftp server 版本

支持的传输协议有 FTP、SFTP 和 SSH,同时也支持 SCP(安全拷贝协议)

WinSCP 的图形化用户界面为终端用户提供了直觉化的界面,因而更易于使用

同时 WinSCP 也为习惯了终端操作的用户提供了强大的命令行界面

WinSCP 的脚本和自动化特性使得任务自动化成为可能

同时也支持拖拽文件进行传输,还有其他的 Windows 集成特性

例如桌面、快捷启动图标,文件浏览器的“发送到”菜单等等

WinSCP 在其它操作系统上没有提供类似的功能

XShell

首先解释一下XShell这款工具,它可以用来远程操控Linux系统

所以我们可以在Windows系统中,安装这个软件用来打开Linux终端

下面来介绍一下XShell的安装和配置过程:

1.新建一个会话

2.在连接这里填上用户名和主机,协议为SSH,其余默认

这里解释一下主机IP,它是虚拟机中Linux的IP地址

所以我们可以通过如下方法获取:在CentOS的终端中输入ifconfig命令,可以查出IP地址如下图所示

3.在用户身份认证这里输入用户名就行,其他默认

4.点击确定按钮之后,出现下图的对话框,点击连接

5.这里会弹出一个对话框,点击接受并保存

那么这个会话就创建好了

我们可输入命令df来查看Linux的分区状态

确定一下我们连接的是不是我们期望的Linux系统

注意:如果创建出来的会话出现乱码状态,那么打当前会话的属性

看一下编码方式是否为UTF-8

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


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

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

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

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

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

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

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

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

关闭防火墙和selinux


[[email protected] ~]# setenforce 0

[[email protected] ~]# service iptables stop

通过命令查看redhat防火墙:

[[email protected] ~]# service  iptables status

iptables: Firewall is not running.

重启SSH服务


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

[[email protected] ~]# service sshd start

[[email protected] ~]# service sshd restart

Stopping sshd:                                             [  OK  ]

Starting sshd:                                               [  OK  ]

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


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

[[email protected] ~]# yum  install openssh-server* -y                                        #进行安装ssh-server 服务

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

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

检查SSH服务配置文件


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

[[email protected] ~]# vim /etc/ssh/sshd_config

PermitRootLogin no

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

[[email protected] ~]# vim /etc/ssh/sshd_config

PermitRootLogin yes

[[email protected] ~]# service sshd restart

设置网络连接方式


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

查看虚拟网络编辑器配置



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

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

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

总结:

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

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

时间: 2024-12-14 02:29:59

Linux SSH 连接不上的各种联想的相关文章

ssh连接不上

server responded "connection closed" the connection to the remote host linux系统的SSH连接不上.第一步,先查看一下ssh的默认端口是否22 [[email protected] ~]# cat /etc/ssh/sshd_config |grep Port 第二步,是查看一下iptables防火墙规则,也发现没有问题. [[email protected] ~]# cat /etc/sysconfig/ipt

远程服务器可以ping通,但ssh连接不上的问题解决

最近遇到远程阿里云服务器可以ping通,但ssh连接不上的问题,分析过程如下.1.检查远程服务器的sshd服务是否正常,检查结果是没问题,端口也正常运行.2.用tcpdump src host xxx.xxx.xxx.xx进行抓包,发现有收到客户端的包,说明sshd服务和基本连接都没问题3.怀疑和以前遇到的阿里云服务器MTU值要求比较低有关,用命令修改MTU值就能连上远程服务器了.sudo ip link set dev eth0 mtu 1200 原文地址:http://blog.51cto.

Linux - ssh 连接问题

SSH 连接方式 ssh -p 22 [email protected] # 从linux ssh登录另一台linux ssh -p 22 [email protected] CMD # 利用ssh操作远程主机 scp -P 22 文件 [email protected]:/目录 # 把本地文件拷贝到远程主机 sshpass -p '密码' ssh -n [email protected]$IP "echo hello" # 指定密码远程操作 ssh -o StrictHostKeyC

虚拟机复制后windows ssh连接不上

如题,更换了电脑,把虚拟机拷贝到了新的电脑上,在虚拟机上启动之后发现windows ping不通linux,在windows上用ipconfig命令查看,发现linux上的ip和windows上的ip不在一个网段, 将虚拟机linux的网络连接从NAT模式修改为桥接模式,然后可以ping通了!但是此时用ssh工具还是连接不上linux, 显示连接拒绝, 参考帖子https://www.xuebuyuan.com/822106.html  的说法,重启ssh服务: service sshd res

Linux服务器连接不上的几种解决办法

Linux远程服务器连接不上,或连接超时解决办法:1.测试网络是否通:    ping 远程IP 2.如果能ping通则表示与服务器网络连接是正常,接下来测试端口:telnet 远程ip 端口 3.如果telnet不上,要考虑服务器是否有防火墙拦截:CentOS7查看防火墙是否运行:firewall-cmd --state CentOS6查看防火墙是否运行/sbin/service iptables status 4.如果防火墙被拦截,需要放行端口.如果防火墙没有拦截,则要考虑服务内部是否配置限

ssh连接不上linux解决办法

第一步:关闭linux防火墙 永久性关闭:lokkit--disabled 第二步:就是先把SSHD服务开启了. 执行这个就行: /etc/init.d/sshd restart

Linux SSH连接超级慢解决办法。

最近连SSH接一台Linux服务器时,连接很慢.等了大概40多秒钟.才能连接上,开始以为是网络线路有问题.经过排查发现,其他linux均无次情况.最后对ssh的配置进行了设置和优化,终于解决此问题. 1.关闭DNS反向解析 linux中,默认开启了ssh的反向解析,会很影响ssh的连接速度. [[email protected]_365 ~]# vim /etc/ssh/sshd_config UseDNS no 2.关闭ssh中的GSS认证. 在 GSS是ssh中的一种认证方式.一般情况下用不

linux ssh连接设置

suselinux11 ssh设置.关闭root用户连接,使用sshd用户连接.然后通过sshd用户跳转root用户. 1.设置 /etc/ssh/sshd_config #vi /etc/ssh/sshd_config port 22   (使用22的端口) ClientAliveInterval 300   (连接300s后,记录一次超时)ClientAliveCountMax 0  (如果发现客户端没有相应,则判断一次超时,这个参数设置允许超时的次数) AllowUsers sshd   

linux ssh连接不了其它主机

比如 ssh 10.0.1.23,出现以下情况: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!So