【转】服务器添加新用户用ssh-key 登录,并禁用root用户 密码登录
【转】Linux最高权限用户root,默认可以直接登录sshd。为了提高服务器的安全度,需要对它进行禁止,使得攻击者无法通过暴力破解来获取root权限。
ps: 以下内容皆非原创,只是个人的一个实践过程的一个记录,记录下来一是怕自己忘记,而是给像我那样的小白,可以一篇搞定服务器安全登录问题。主要参考了几个优秀的博客文章,皆在文章后面列出,感谢原创!
一、添加新用户并且修改sshd 默认端口
1.1 新建用户
1,新建一个用户;
#useradd xxx (xxx为你要新建的用户名)
2,为新用户设置密码;
#passwd xxx (xxx为你要新建的用户名)
3,修改SSHD配置,禁止root直接登录
#vi /etc/ssh/sshd_config
查找“#PermitRootLogin yes”,将前面的“#”去掉,段末“yes”改为“no”(不同版本可能区分大小写),并保存文件。
4.为新添加的用户添加root权限
vi /etc/sudoers
#方法一:将下面#号去掉,保存
#%wheel ALL=(ALL) ALL
修改新添加的用户,使属于root组
#usermod -g root xxx
#方法二:直接添加root权限, 直接复制下面root的那行,用户改成我们新添加的用户就可以了
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
xxx ALL=(ALL) ALL
权限添加完之后,使用xxx用户登录操作,提示权限不足的时候,就可以直接sudo啦
注:要是找不到sudoers,那么就先安装sudo吧 yum install sudo.
1.2修改sshd默认端口
虽然更改端口无法在根本上抵御端口扫描,但是,可以在一定程度上提高防御。
1.打开sshd配置文件
#vi /etc/ssh/sshd_config
2.找到#Port 22字段删掉#,将22改为其他不被使用的端口
服务器端口最大可以开到65536
3.重启sshd服务
#service sshd restart
4.别忘了修改登陆工具那的端口设置。
二、为新用户添加ssh-key登录,禁止密码登录
1. 生成ssh-key
ssh-keygen -t rsa -f test -C "test key" //-f 文件名 -C 备注 -t 类型
2. 上传公钥到服务器
ssh-copy-id -i ~/.ssh /id_rsa.pub A@IP_address
//这一步会将公钥上传到 A 中的 /home/A/.ssh/authorized_keys
//authorized_keys文件,是用来存放授权密钥的
3. 设置服务器公钥的权限
chmod /home/A/.ssh/authorized_keys
#将 authorized_keys 的权限设置为对拥有者只读,其他用户没有任何权限 chattr +i /home/A/.ssh/authorized_keys
#保证 authorized_keys 的权限不会被改掉 chattr +i /home/A/.ssh
#设置 ~./ssh 的 immutable 位权限,
#防止重命名 ~/.ssh ,然后新建新的 ~/.ssh 目录和 authorized_keys 文件
4. 尝试使用ssh-key登录服务器
ssh -i /user/.ssh /id_rsa A@IP_address
#利用 SSH-Key 登陆普通账户 A ,看是否成功
5.如果成功登陆 A, 编辑 服务器上面的sshd_config 文件
su root #切换root账号
vim /etc/ssh/sshd_config #按 i 进入编辑 确保(去掉注释#)
RSAAuthentication yes #允许 RSA 认证
PubkeyAuthentication yes #允许公钥认证
PermitRootLogin no #禁止 ROOT 登陆
PasswordAuthentication no #禁止密码登陆
修改端口, 将 #Port 改为 Port 端口号数字 #改掉默认端口
按 esc 退出编辑,:wq #保存并退出 sshd_config service sshd restart #重启 SSH
6.配置本地ssh config,方便登录。多个 ssh 账号需要配置,在 config 文件里隔行分开写就行
vi ~/.ssh/config #在私钥所在的.ssh 文件夹内新建一个 config 文件 按 i 编辑,复制以下内容
Host vps #这个名字随意,感觉像调用函数
HostName IP_address #IP 地址或服务器域名
Port XX #服务器端开放的 ssh 端口,第 步中改的端口
User A #登录的用户名
IdentityFile ~/.ssh/ id_rsa #使用的密钥文件密钥文件,本地私钥地址
Host vps2
……
按 esc 退出编辑,输入:wq 退出并保存 #ssh vps 就能直接登录vps啦!
另外备注一点, github 用ssh下载的话,会发现permison denied!

检测是由于默认是读取id_rsa 的秘钥,我已经命名成了github,所以找不到就一直连不上

把代码加到缓存ssh-agent 的高速缓存里面
ssh-add ~/.ssh/github
另外一种方法就是在ssh config里面添加我们的github信息
Host personal
HostName github.com
User git
IdentityFile ~/.ssh/work_rsa
测试 ssh - T git@personal 成功
git clone git@personal:MorePainMoreGain/datetimepicker.git #MorePainMoreGain 用户名 datetimepicker 仓库名
参考博客:
Linux 0 基础,在 VPS 上禁止 ROOT 账户,禁用密码登录,新建普通账户 A 并通过 SSH-Key 登陆 A 的方法 (欢迎指正:) OS: OS X 10.10.5
【转】服务器添加新用户用ssh-key 登录,并禁用root用户 密码登录的更多相关文章
- CentOS修改SSH端口号和禁止root用户直接登录
linux安装ssh远程登录后,为了安全起见,修改默认的22端口号并禁止root用户直接通过ssh登录. 配置方法如下: 1.使用vi编辑器打开ssh配置文件 /etc/ssh/sshd_config ...
- Ubuntu-18.04 下修改root用户密码,安装SSH服务,允许root用户远程登录,安装vsftp服务器
修改root用户密码 打开终端,输入 sudo passwd root 指令: 安装SSH服务 ssh默认端口号是22,可以在/etc/ssh/sshd_config文件中修改 查看服务器否开启:ne ...
- CentOS6.9下ssh密钥登录配置步骤(免密码登录)和ssh-keygen 命令常用参数
密钥登录步骤(免密码登录)ssh登录提供两种认证方式:口令(密码)认证方式和密钥认证方式.其中口令(密码)认证方式是我们最常用的一种,出于安全方面的考虑,介绍密钥认证方式登录到linux/unix的方 ...
- Debian9.5下ssh密钥登录配置步骤(免密码登录)和ssh-keygen 命令常用参数
密钥登录步骤(免密码登录)ssh登录提供两种认证方式:口令(密码)认证方式和密钥认证方式.其中口令(密码)认证方式是我们最常用的一种,出于安全方面的考虑,介绍密钥认证方式登录到linux/unix的方 ...
- REDHAT一总复习1 ssh配置 禁用root用户SSH连接
生成SSH公钥 $ ssh-keygen 生成的公钥安装到指定的服务器上,这里安装到desktop0上的student账户 $ ssh-copy-id desktop0 $ su - 禁用root用户 ...
- linux下开启SSH,并且允许root用户远程登录,允许无密码登录
参考:http://blog.csdn.net/jia0511/article/details/8237698 1. 允许root用户远程登录 修改ssh服务配置文件 sudo vi /etc/ssh ...
- docker下debian镜像开启ssh, 允许root用密码登录
用的官方python镜像做开发, 暴露端口, 用pycharm ssh进去开发. 忽然发现本来ssh能连上, 但是更了新的python镜像连不上了. 有折腾了一下, 连上了. 主要是python官网镜 ...
- 1.配置桥接,并抓包验证 2.实现免密登录 3.修改登录端口: 22-》2222 4.不允许root用户远程登录 5.创建用户sshuser1,并设置密码,且只允许sshuser1远程ssh登录
1.配置桥接: 抓包时如果有ens160的ICMP,说明我们的桥接搭建成功通过桥接访问到了ens160(这里忘加图片了) (1)创建一个桥接设备和会话 (2)添加设备和会话到桥接设备上 (3)启动从 ...
- KingbaseES V8R6C5禁用root用户ssh登录图形化部署集群案例
案例说明: 对于KingbaseES V8R6C5版本在部集群时,需要建立kingbase.root用户在节点间的ssh互信,如果在生产环境禁用root用户ssh登录,则通过ssh部署会失败:在图形化 ...
随机推荐
- Java 类型, Hibernate 映射类型及 SQL 类型之间的相应关系
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/ ...
- MySQL工具1:mysqladmin
每两秒显示一下MySQL的状态,一共显示5次. # mysqladmin -uroot -p -i 2 -c 5 status 查看MySQL的运行状态: #mysqladmin -uroot -p ...
- Codeforces B - Berland National Library
B. Berland National Library time limit per test 1 second memory limit per test 256 megabytes input s ...
- vim中的高亮全部同样单词的方法
用vim时,想高亮显示一个单词并查找的方发.将光标移动到所找单词. 1: shift + "*" 向下查找并高亮显示 2: shift + "#" 向上查找 ...
- openerp 7.0 来自外部的邮件会发送二次问题解决方法
插入代码:\addons\mail\mail_mail.py #309 line this = self.pool.get('res.users').browse(cr, uid, uid, cont ...
- Druid register mbean error
key: [com.alibaba.druid.stat.DruidDataSourceStatManager.addDataSource(DruidDataSourceStatManager.jav ...
- JAVA中定义常量的几种方式
1.最古老的 //未处理 public static final Integer PROCESS_STATUS_UNTREATED = 0; //已接收 public static final Int ...
- MyEcplise安装Freemarker插件(支持.ftl文件)
1.下载插件:http://sourceforge.net/projects/freemarker-ide/?source=typ_redirect 2.下载freemarker-2.3.19.jar ...
- HDUOJ---携程员工运动会场地问题
携程员工运动会场地问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- bookstrap table插件
牛逼的插件: http://www.html580.com/?oF9uwUtZ