SSH连接不上Linux主机的解决方法
一、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 [email protected]
然后确认一下公钥与密钥的建立,以及对应于客户端的一些处理
[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客户端软件同时具备了终端仿真器和文件传输功能
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 被公认为是最强大的文件传输工具
FileZilla Client 的详细介绍:请点这里
FileZilla Client 的下载地址:请点这里
WinSCP
WINSCP 是一款 Windows 平台的免费开源 FTP 客户端。WinSCP 不提供 ftp server 版本
支持的传输协议有 FTP、SFTP 和 SSH,同时也支持 SCP(安全拷贝协议)
WinSCP 的图形化用户界面为终端用户提供了直觉化的界面,因而更易于使用
同时 WinSCP 也为习惯了终端操作的用户提供了强大的命令行界面
WinSCP 的脚本和自动化特性使得任务自动化成为可能
同时也支持拖拽文件进行传输,还有其他的 Windows 集成特性
例如桌面、快捷启动图标,文件浏览器的“发送到”菜单等等
WinSCP 在其它操作系统上没有提供类似的功能