Linux服务器安全之用户密钥认证登录
转自:http://blog.sina.com.cn/s/blog_6561ca8c0102vb0d.html
一、 密钥简介
在Linux下,远程登录系统有两种认证方式:密码认证和密钥认证。密码认证方式是一种传统的安全策略。设置一个相对复杂的密码,对系统安全能起到一定的防护作用,但是也面临一些其他问题,例如密码暴力破解、密码泄露、密码丢失等,同时过于复杂的密码也会对运维工作造成一定的负担。
密钥认证是一种新型的认证方式,公用密钥存储在远程服务器上,专用密钥保存在本地,当需要登录系统时,通过本地专用密钥和远程服务器的公用密钥进行配对认证,如果认证成功,就可以成功登录系统。这种认证方式避免了被暴力破解的危险,同时只要保存在本地的专用密钥不被黑客盗用,攻击者一般无法通过密钥认证的方式进入系统。
二、 服务器端密钥的生成和配置
OpenSSH的密钥认证体系有两种:RSA和DSA,分别是两种不同的加解密算法。T710服务器中管理员主要采用RSA密钥认证。用户在使用初始密钥登录后,可自行修改使用其他密钥认证方法。
服务器端RSA密钥的生成和配置步骤如下:
1. 在用户目录下新建一个.ssh目录,并将其目录权限改为700(仅用户自身有读写操作权限):
# mkdir .ssh
# chmod 700 .ssh
2. 进入.ssh目录,使用ssh-keygen命令生成rsa密钥对:
# ssh-keygen –t rsa (一路回车即可)
3. 这时生成了两个文件:id_rsa和id_rsa.pub,其中前一个为私钥,后一个为公钥,公钥须保留在服务器上,私钥拷贝到客户端机器上
4. 在.ssh目录中新建一个文件名为:authorized_keys,将公钥内容拷贝到这个文件中,并将文件权限改为600(仅用户自身有读写权限)
# touch authorized_keys
# cat id_rsa.pub >> authorized_keys
# chmod 600 authorzied_keys
到此,服务器端的密钥设置完成,这里需注意要保证.ssh和authorized_keys都仅用户自身有写权限,否则验证无效,这也是系统处于安全性考虑做的设置。
三、客户端密钥的设置
首先我们需要将在服务器端生成的私钥id_rsa拷贝到要用来登录服务器的客户端电脑。接下来根据客户端电脑操作系统的不同进行分别说明:
Windows系统
在Windows系统下,一般我们采用不同的X server工具来登录,需要先将私钥导入到登录工具的密钥管理器,建立一个新的连接,用户名和主机的填写与采用用户名密码登录一样,登录不再选择”Password”而是”Public key",User Name填写自己的登录用户名,User Key选择之前导入的服务器私钥 ,保存之后,即可无密码登录。
Linux系统
Linux系统下设置同样先将服务器私钥拷贝到客户端
1. 与服务器端一样,在用户目录下新建一个.ssh目录,并将其目录权限改为700(仅用户自身有读写操作权限):
# mkdir .ssh
# chmod 700 .ssh
2. 将私钥id_rsa拷贝到.ssh目录下,检查文件权限是否为600,如果不是,需要更改文件权限为600
# mv id_rsa ./.ssh
# chmod 600 id_rsa
3. 这时即设置完毕,输入ssh命令,即可直接连接到服务器,无需输入用户名密码
# ssh –l 用户名 服务器IP
4. 如果需要从客户端通过密钥认证的方式登录不同的服务器,私钥的名称不能都是用id_rsa,这是可以在.ssh目录下建立一个config文件来进行区分,config文件权限同样设为600
# touch config
# chmod 600 config
5. 为config文件添加内容如下:
User username //username 填写自己的登录用户名
Host server_IP //设置服务器IP
IdentityFile ~/.ssh/rsa_file //rsa_file填写私钥名称
Port 22
这样,用户可以将私钥id_rsa改为与config文件中irs_file同名的文件名,就可以匹配登录服务器了。
Linux禁止root账户远程登录
Linux系统中,root用户几乎拥有所有的权限,远高于Windows系统中的administrator用户权限。一旦root用户信息被泄露,对于我们的服务器来说将是极为致命的威胁。所以禁止root用户通过ssh的方式进行远程登录,这样可以极大的提高服务器的安全性,即使是root用户密码泄露出去也能够保障服务器的安全。就下来,就由专业运营香港服务器、美国服务器、韩国服务器等国外服务器的天下数据为大家详细介绍如何禁止ROOT用户通过SSH方式远程登录。
首先创建一个doiido普通用户加入到相应的组
这里必须要新建一个用户,否则将会造成无法通过远程ssh登录服务器
# groupadd doiido
# useradd -g doiido doiido
更改用户 doiido 的密码
# passwd doiido
然后修改sshd_config文件
# sed -i 's/#PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
最后重启ssh服务
# service sshd restart
这样即使root用户密码泄漏,别人也无法通过root用户直接连接服务器。
Linux服务器安全之用户密钥认证登录的更多相关文章
- Linux学习笔记总结--ssh认证登录
原理简介 SSH证书认证登录的基础是一对唯一匹配密钥: 私钥(private key)和公钥(public key).公钥用于对数据进行加密,而且只能用于加密.而私钥只能对使用所匹配的公钥,所加密过的 ...
- python批量操作Linux服务器脚本,ssh密码登录(执行命令、上传、下载)(一)
-*- paramiko.util.log_to_file( ssh = paramiko.SSHClient() ssh.set_missing ...
- linux服务器账号密码正确无法登录
登录服务器时,发现密码错误,输入后还是错误不能登录 最后发现登录日志中有pam_tally2(sshd:auth): user root (0) tally 53, deny 6 less /var/ ...
- linux 服务器之间配置免密登录
客户机:172.16.1.2 远程机:172.16.1.3 1.远程机 a.允许root用户通过22端口登录 vi /etc/ssh/sshd_config PORT 22 PermitRootLog ...
- ECS Linux 服务器公钥秘钥SSH登录
Ubuntu 14.04.1为例,设置步骤如下: 一. 生成密钥的公钥和私钥 # ssh-keygen -t rsa Generating public/private rsa key pair. E ...
- Linux使用私钥公钥(Public key)登录 - 免密码登录
为了更安全.方便的登录Linux服务器,可以取消密码登录,使用私钥公钥的方式来登录,更方便也更安全. 生成密钥 借助Xshell可以很方便的生成和管理私钥,点击工具菜单,选择新建用户密钥生成向导: 直 ...
- Linux服务器安全加固
关于对公司网站服务器安全加固的一些想法及思路: 一.修改密码和ssh登录端口,并且尽可能的用密钥对登录,禁止用密码登录(主要针对Linux)二.修改/etc/hosts.allow 设置仅仅允许某几台 ...
- Mac OS X下配置远程Linux 服务器SSH密钥认证自动登录
1. 在本地机器创建公钥 打开万能的终端,执行如下命令,无视一切输出,一路欢快地回车即可. ssh-keygen -t rsa -C 'your email@domain.com' -t 指定密钥类型 ...
- 使用XShell工具密钥认证登录Linux系统
如果你是一名Linux运维,那么Linux服务器的系统安全问题,可能是你要考虑的,而系统登录方式有两种,密码和密钥.哪一种更加安全呢? 无疑是后者! 这里我为大家分享用Xshell利器使用密钥的方式登 ...
随机推荐
- 图像添加logo水印函数
<?php //图像添加水印函数 /** *为一张图片添加上一个logo水印(以保存新图片的方式实现) *@param string $picname 被缩放的处理图片源 *@param int ...
- IIS 7.5 配置 php 5.4.22 链接 sql 2008(用PDO链接数据库)
最近在接触PHP这块,关于在wndows系统下的php配置,虽然网上已经很多文章,但有时候有些配置找起也麻烦,所以分享给大家. 一.php 5.4.22 下载地址 http://windows.php ...
- node 常用指令 node 扩展链接
node -v node 版本 npm -v npm版本号,npm是在安装nodejs时一同安装的nodejs包管理器 (注册.安装模块,和小乌龟有点像) npm list 当 ...
- Flex 布局的各属性取值解释
Flex布局是一种弹性布局.布局样式比较灵活,大多数情况下可以替代float,而且不会脱离文档里流. Flex中定义了两个轴线,一个主轴一个副轴,这个概念你可以想想屏幕坐标系(X轴向右,Y轴向下),F ...
- JSP 隐含对象
JSP 隐含对象 JSP隐含对象是JSP容器为每个页面提供的Java对象,开发者可以直接使用它们而不用显式声明.JSP隐含对象也被称为预定义变量. JSP所支持的九大隐含对象: 对象描述 reques ...
- Intellij Idea 将java项目打包成jar
1.菜单:File->project stucture 2.在弹窗最左侧选中Artifacts->"+",选jar,选择from modules with depend ...
- 修复Ubuntu下XTerm不能正常显示中文字体的问题
打开/etc/X11/app-defaults/XTerm在最后添加如下代码: Xft.dpi:96 xpdf.title: PDF XTerm*faceSize: 1 ...
- Jenkins插件开发(四)-- 插件发布
上一篇blog介绍了插件开发中要注意的一些问题, 我们再来介绍插件开发完成后,如何上传到jenkins的插件中心(这里假设你的代码是放在github上的,使用svn或其他版本管理工具的请参考其他文章) ...
- New Concept English Two 7
$课文14 你会讲英语吗? 133. I had an amusing experience last year. 去年我有过一次有趣的经历. 134. After I had left a smal ...
- 0基础小白怎么学好Java?
自身零基础,我们应该先学好Java,小编给大家介绍一下Java的特性: Java语言是简单的 Java语言的语法与C语言和C++语言很接近,使得大多数程序员很容易学习和使用Java.Java丢弃了C+ ...