`
zhouxingfu520
  • 浏览: 422405 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

linux ssh配置

阅读更多

     SSH服务和Telnet服务一样,通过远程登录登录到系统,在远程操控系统。但它与Telnet的不同点就是:Telnet在传输的过程中是平文传输,而SSH是将传输内容加密,在传送的过程中保证了传送内容的保密性,从而提高了系统的安全性。

  在这里,我们不准备将SSH服务作为用户上传下载文件的工具,前面已经讲过ftp的文章vsftpd配置 。我们只用SSH服务的开通为远程管理系统提供方便。另外在用户认证方式上,为了服务器和用户的安全,禁止用户密码的认证方式,而基于“钥匙”的方式。

CentOS 6 ssh服务配置

1 安装

2 配置ssh服务

3 建立公钥与私钥

4 使用 PuTTY 客户端软件登入

5 ssh服务配置文件详解

ssh服务安装

Linux下广泛地使用OpenSSH程序来实现SSH协议。这个在CentOS 6 环境下,默认地安装了。

[root@localhost ~]# rpm -qa | grep ssh
openssh-clients-5.3p1-81.el6.i686
libssh2-1.2.2-11.el6_3.i686
openssh-server-5.3p1-81.el6.i686
openssh-askpass-5.3p1-81.el6.i686
openssh-5.3p1-81.el6.i686

如果,没有安装。可以手动地在Linux安装盘,找到相应的RPM组件,进行安装(服务器组件是必顺的,其它的可以选择性地安装)
[root@localhost ~]# yum install openssh* # 安装SSH
[root@localhost ~]# service sshd start # 启动SSH
[root@localhost ~]# chkconfig sshd on # 设置开机运行
[root@localhost ~]# netstat -tlp # 显示 说明ssh已经启动
 0      0 *:ssh                   *:*                     LISTEN


SSH配置文件的修改

首先修改SSH的配置文件。如下:
[root@localhost ~]#  vi /etc/ssh/sshd_config   # 用vi打开SSH的配置文件

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

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

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

PasswordAuthentication no # 修改后变为此状态,不允许密码方式的登录

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

  然后保存并退出。

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

[root @ localhost ~]#  vi /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 @ localhost ~]#  vi /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的配置文件后,需要重新启动SSH服务才能使新的设置生效。

[root @ localhost ~]#  /etc/rc.d/init.d/sshd restart   # 重新启动SSH服务器

Stopping sshd:             [ OK ]
Starting sshd:             [ OK ]  ← SSH服务器重新启动成功

 

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

SSH2的公钥与私钥的建立

登录为一个一般用户,基于这个用户建立公钥与私钥。(这里以 centosaline 用户为例)
[root @ localhost ~]#  su - centosaline  # 登录为一般用户 centosaline
[
centosaline @localhost ~]$ 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
centosaline @localhost . centosaline .com

然后确认一下公钥与密钥的建立,以及对应于客户端的一些处理。
[
centosaline @localhost ~]$ cd ~/.ssh   # 进入用户SSH配置文件的目录
[
centosaline @localhost .ssh]$ ls -l  #列出文件
total 16
-rw------- 1
centosaline centosaline 951 Sep 4 11:22 id_rsa  # 确认私钥已被建立
-rw-r--r-- 1
centosaline centosaline 241 Sep 4 11:22 id_rsa.pub  # 确认公钥已被建立
[
centosaline @localhost .ssh]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys   # 公钥内容输出到相应文件中
[
centosaline @localhost .ssh]$ rm -f ~/.ssh/id_rsa.pub   # 删除原来的公钥文件
[
centosaline @localhost .ssh]$ chmod 400 ~/.ssh/authorized_keys   # 将新建立的公钥文件属性设置为400

然后,将私钥通过安全的方式转移到欲通过SSH连接到服务器的PC上。
[centosaline @localhost .ssh]$ exit   # 退出一般用户的登录(返回root的登录)
[root@
localhost ~]# mount /mnt/ssh1/   # 加载软盘驱动器
[root@
localhost ~]# mv /home/ centosaline /.ssh/id_rsa /mnt/ssh1 / # 将刚刚建立的私钥移动到软盘
[root@
localhost ~]# umount /mnt/ssh1/  # 卸载挂载

  这样,我们通过对应于
centosaline 用户的私钥,就可以在远程终端上通过SSH客户端连接到服务器了。但服务器生成的私钥匙不能被客户端直接应用…详细请见下一节。
[root@ localhost ~]# /etc/init.d/ssh restart #以上所有修改重启ssh:

  

使用
PuTTY登入

 当服务器的SSH服务正常运行后,我们完全可以从此在我们的自用PC上用SSH客户端软件在局域网中登录到服务器,用这种方式完成服务器以后的配置和维护。不严格的说,这时服务器是不需要显示器和键盘的,因为绝大多数的配置工作都可在远端(局域网内)的客户端上操控。

  这里,以简单易用的SSH客户端软件之一 -- PuTTY 为例,介绍从自用PC上登录到服务器的方法。

转换来自服务器端的私钥为PuTTY可用的私钥

  在 用OpenSSH构建SSH服务器 一节中,我们将服务器端相应用户的的私钥用安全的方式--3.5寸磁盘为介质,移动到了远程终端(自用PC等等)上,下面就介绍一下载远程终端用SSH客户端软件登录到服务器的方法。

  SSH客户端软件,我们准备是用简单易用的PuTTY。但服务器端直接生成的私钥,PuTTY无法直接使用,需要用PuTTYGen来转换为PuTTY可以使用的私钥匙。

[1] 下在私钥转换工具 PuTTYGen 。 并且将要转换的私钥从软盘上复制到远程终端本地硬盘的适当位置上。

[2] 运行 PuTTYGen ,出现如下窗口:



[3] 点击Load,选取服务器端生成的私钥(文件类型要选择“All Files”)。如下


[4] 开始转换私钥,这里需要输入在服务器端建立此私钥时的口令。在文本框中输入口令开始转换,如下:



[5 ] 保存转换后的私钥匙到适当的位置(转换后的私钥将做为PuTTY登录到服务器时使用的私钥)。点击“Save private key”,并选择适当的位置保存私钥。如下:




  最后,关闭PuTTYGen,下面我们开始用PuTTY远程登录服务器。

在Windows下用PuTTY通过SSH协议登录到服务器

[1] 下载 PuTTY ,放在适当的目录(文件夹)中。(PuTTY为一个可执行文件,双击即运行)

[2] 双击启动 PuTTY ,在左侧找到Auth(认证方式)一项,对连接是使用的私钥进行设定,如下:


[3] 点击Browse,选择刚刚用PuTTYGen转换后的私钥。如下:



   然后点击左侧的Session,回到主机连接信息的设置,如下:

[4] 配置主机名,在“Host Name”填入服务器的IP地址,以及在“Saved Sessions”栏上填入此连接的名称(任意),然后点击Save,保存主机连接设置。如下:



[5 ] 然后在登录窗口中输入服务器端,相应用户的用户名,如下:


[6 ] 在输入完用户名后,不会出现用户密码输入提示框,因为在SSH服务器配置中我们禁止了用户通过用户密码方式的SSH登录。这时候会出现要求输入口令的提 示,这个口令就是在服务器端建立相应用户(centosaline)的私钥的时候设置的口令。输入口令,进行登录。如下:



  以上,就通过“钥匙”的方式成功的登录到了服务器。

  另外由于在SSH服务器设定时禁止了root直接从远程登录,所以用SSH客户端是无法用通过root登录的,再者,要允许某个用户对服务器进行登 录,必须基于某个用户建立其相应的公钥与私钥--因为我们禁止用户通过用户密码的认证方式来登录SSH服务器,这样就大大增强了服务器的安全性。

  但作为管理员,您可以将一般用户加入到wheel组中(方法见 CentOS的下载、安装及初始环境设置 ),然后基于此一般用户建立相应私钥于公钥,通过此用户远程登录到,然后再通过“su -”命令,获得root权限,对系统进行配置。而且,在初始环境设置中,我们不允许wheel组外用户“su -”登录为root用户,从而又进一步增强了系统的安全性。

  从此,我们就可以通过在Windows下用PuTTY登录到服务器的方式来完成所有服务器的配置工作。当然如果您喜欢,或出于其他原因,也同样可以在 服务器本机上完成所有的配置工作。二者无本质的区别,这也体现了UNIX操作系统多用户、多任务处理的特性之一。

下篇期待 linux下mysql安装 配置。
ssh服务配置文件详解

Port 22
“Port”设置sshd监听的端口号。

ListenAddress 192.168.1.1
“ListenAddress”设置sshd服务器绑定的IP地址。

HostKey /etc/ssh/ssh_host_key


“HostKey”设置包含计算机私人密匙的文件。

ServerKeyBits 1024
“ServerKeyBits”定义服务器密匙的位数。

LoginGraceTime 600
“LoginGraceTime”设置如果用户不能成功登录,在切断连接之前服务器需要等待的时间(以秒为单位)。

KeyRegenerationInterval 3600
“KeyRegenerationInterval”设置在多少秒之后自动重新生成服务器的密匙(如果使用密匙)。重新生成密匙是为了防止用盗用的密匙解密被截获的信息。

PermitRootLogin no
“PermitRootLogin”设置root能不能用ssh登录。这个选项一定不要设成“yes”。

IgnoreRhosts yes
“IgnoreRhosts”设置验证的时候是否使用“rhosts”和“shosts”文件。

IgnoreUserKnownHosts yes
“IgnoreUserKnownHosts”设置ssh daemon是否在进行RhostsRSAAuthentication安全验证的时候忽略用户的“$HOME/.ssh/known_hosts”

StrictModes yes
“StrictModes”设置ssh在接收登录请求之前是否检查用户家目录和rhosts文件的权限和所有权。这通常是必要的,因为新手经常会把自己的目录和文件设成任何人都有写权限。

X11Forwarding no
“X11Forwarding”设置是否允许X11转发。

PrintMotd yes
“PrintMotd”设置sshd是否在用户登录的时候显示“/etc/motd”中的信息。

SyslogFacility AUTH
“SyslogFacility”设置在记录来自sshd的消息的时候,是否给出“facility code”。

LogLevel INFO
“LogLevel”设置记录sshd日志消息的层次。INFO是一个好的选择。查看sshd的man帮助页,已获取更多的信息。

RhostsAuthentication no

“RhostsAuthentication”设置只用rhosts或“/etc/hosts.equiv”进行安全验证是否已经足够了。

RhostsRSAAuthentication no
“RhostsRSA”设置是否允许用rhosts或“/etc/hosts.equiv”加上RSA进行安全验证。

RSAAuthentication yes
“RSAAuthentication”设置是否允许只有RSA安全验证。

PasswordAuthentication yes
“PasswordAuthentication”设置是否允许口令验证。

PermitEmptyPasswords no
“PermitEmptyPasswords”设置是否允许用口令为空的帐号登录。

AllowUsers admin
“AllowUsers”的后面可以跟着任意的数量的用户名的匹配串(patterns)或user@host这样的匹配串,这些字符串用空格隔开。主机名可以是DNS名或IP地址。

分享到:
评论

相关推荐

    Linux SSH配置和禁止Root远程登陆设置文档.pdf

    Linux SSH 配置和禁止 Root 远程登陆设置 ...本文档详细介绍了 Linux SSH 配置和禁止 Root 远程登陆设置的步骤和方法,通过修改 SSH 服务器的配置文件和生成公钥与私钥,可以实现 SSH 服务器的安全配置。

    Linux SSH配置和禁止Root远程登陆设置文档(技术学习).docx

    Linux SSH 配置和禁止 Root 远程登录设置 Linux SSH 配置和禁止 Root 远程登录设置是 Linux 系统中的一项重要的安全设置。通过本文档,我们将了解如何配置 SSH 服务器,禁止 Root 用户远程登录,提高 Linux 系统的...

    Linux_SSH配置和禁止Root远程登陆设置文档

    ### Linux SSH配置与安全增强详解 #### 一、概述 SSH(Secure Shell)是一种网络协议,用于计算机之间的加密登录和命令执行,以及数据传输。它能够有效防止远程管理过程中的信息泄露、身份替换等攻击。在Linux系统...

    Linux SSH配置和禁止Root远程登陆设置文档之欧阳术创编.docx

    【Linux SSH配置与Root远程登陆禁止】 SSH (Secure SHell) 是一种网络协议,用于在不安全的网络...以上就是关于Linux SSH配置及禁止Root远程登录的详细说明。遵循这些步骤,可以提升系统的安全性并降低被攻击的风险。

    Linuxssh配置[文].pdf

    在软件开发领域,Linux SSH配置是远程访问和管理Linux系统的关键技术。SSH(Secure Shell)提供了一种安全的网络协议,用于在不安全的网络环境中加密数据传输,尤其是用于命令行界面的登录、命令执行以及文件传输。...

    linux ssh的配置

    ### Linux SSH 的配置详解 #### 3.1 Linux SSH 的安装与配置 ##### 安装 SSH 服务 在 Linux 系统中安装 SSH 服务前,我们首先要确认系统是否已经安装了 SSH。可以通过以下命令检查 SSH 服务是否已安装: ```bash...

    Linux ssh配置

    Linux ssh配置.有需要的可以下来看下,会有帮助的。

    嵌入式Linux SSH服务搭建 编译好的ssh

    首先,我们需要在嵌入式Linux环境中设置交叉编译环境,确保编译工具链正确配置。这通常涉及设置目标架构、编译器路径和必要的库路径。例如,对于ARM架构的嵌入式设备,我们需要一个针对ARM的GCC编译器。 1. **下载...

    linux ssh ssh

    Linux SSH (Secure Shell) 是一个网络协议,用于在不安全的网络上安全地远程登录Linux系统,执行命令和传输数据。SSH提供了加密的网络通信,确保了数据在传输过程中的安全性,防止被窃听或篡改。在Windows系统中,...

    配置linux ssh免密码登录

    配置linux ssh免密码登录,第一行生成密钥,第二行是要对哪台机器免密码ssh登录就配置成哪一台,这里root@hadoop00,root是用户名,hadoop00是主机名

    linux ssh key

    3. 配置 Putty 登录设置 打开 Putty,选择 Connection 部分的 SSH / Auth 设置,选择刚才保存的私钥文件。在 Connection / Data 的 Login details 中填入登录的用户名。 4. 登录服务器 使用 Putty 登录服务器,第...

    linux的SSh详细配置实例

    linux的SSh详细配置实例,使用flash或播放器打开,点击左边习题,再点击下面步骤即可

    linux ssh 客户端 服务端 window服务端linux服务端 安装配置等 搜集整理较全

    主要的SSH配置文件位于`/etc/ssh/sshd_config`。常用配置包括: - `Port`:设置SSH服务器监听的端口号,默认为22。 - `PermitRootLogin`:允许或禁止root用户通过SSH登录。 - `PasswordAuthentication`:开启或关闭...

    java linux ssh登陆

    标题“Java Linux SSH登录”指的是使用Java编程语言与Linux操作系统进行安全外壳(SSH)通信的过程。在描述中提到,这个过程通常涉及建立一个通道并执行单个命令。这里,我们将会详细探讨Java如何通过SSH连接到Linux...

    Linux SSH配置和禁止Root远程登陆设置文档(技术学习).pdf

    ...

    linux ssh tftp ftp

    在深入探讨Linux系统中SSH、TFTP与FTP的配置细节之前,我们首先应当明确这些协议在现代网络环境中的角色与功能。SSH(Secure Shell),即安全外壳协议,是一种用于远程登录和管理网络设备的安全协议,它通过加密通信...

    linux下ssh服务配置.pdf

    SSH 服务配置在 Linux 系统中的应用 SSH(Secure Shell)是一种安全的远程登录协议,用于取代不安全的 telnet、rlogin、rsh 等协议。SSH 可以提供加密的远程登录、文件传输和端口转发等功能,使得数据传输更加安全...

    嵌入式Linux中SSH服务搭建

    总结来说,嵌入式Linux中搭建SSH服务涉及安装和配置SSH服务器、设置用户认证信息、启动服务以及在开发板上移植和运行SFTP客户端。这不仅包括对Linux系统基本操作的熟悉,还涉及到交叉编译技术的掌握,以及对网络安全...

    Linux下ssh简单配置

    该文档介绍在Linux环境下进行简单ssh配置的方法,适合Linux初学者

Global site tag (gtag.js) - Google Analytics